コードは、実際のクラスではなく、 Type のインスタンスをメソッドに渡す必要がありますA
。writeValueAsString
はObjectMapper
リフレクションを介してインスタンスのタイプを判別できますが、インスタンスを渡さない場合、生成された JSON に配置するフィールド値を判別できません。
また、必ず適切な例外をキャッチまたはスローしてください。
public void save() {
try {
A a = new A();
ObjectMapper mapper = new ObjectMapper();
String temp = mapper.writeValueAsString(a);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
A
classおよび classのフィールドのアクセサーも必要ですB
。 通知B
Jackson は、提供するインスタンスのすべてのフィールドをマップできる必要があるため、前の文に含めました。
public A {
private List<B> b;
private int c;
private B getB(){ return b;}
private void setB(B b){this.b = b;}
private int getC(){return c;}
private void setC(int c){this.c = c;}
}
これは、私がテストした完全な動作例です。
import java.io.IOException;
import java.util.List;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
public class A {
private List<B> b;
private int c;
public List<B> getB() {
return b;
}
public void setB(List<B> b) {
this.b = b;
}
public int getC() {
return c;
}
public void setC(int c) {
this.c = c;
}
public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException {
A a = new A();
ObjectMapper mapper = new ObjectMapper();
String temp = mapper.writeValueAsString(a);
System.out.println(temp);
}
}
class B{
}
この簡単な例が機能しない場合、jackson-mapper-asl.jar
ファイルがビルド パス上にない可能性があります。ここからファイルをダウンロードして、ローカル マシンのどこかに配置します。
次にEclipse経由で、プロジェクトを右クリックしてプロパティを選択します。
次に、[ビルド パス] > [ライブラリ] > [外部 Jar を追加] を選択します。jar を見つけて、[OK] をクリックします。