複雑なjsonをJavaの
オブジェクトに変換する際に直面する問題がここにあります。 SCはそのフィールドなどのJavaキーワードは、プライベートとパブリック持っていることをオブジェクト構造のミスマッチの問題jsonからJsonメソッド
{
"view": {
"unit": {
"sc": {
"private": 6,
"public": 6
},
"step": "PREPARE",
"id": 3037,
.....
}
お知らせ:
の着信JSONはこのようなものです。
クライアント側では、このjsonを使用する次のコードがあります。
String obj = restTemplate.postForObject(url, entity, String.class);
JsonObject jsonObj = new JsonParser().parse(obj).getAsJsonObject();
T objFinal = buildGson(dateFormat).fromJson(jsonObj, PrepareStateObject.class);
PrepareStateObjectは、対応するjsonと同じですが、唯一の違いはscオブジェクトです。
public class sc implements java.io.Serializable {
private static final long serialVersionUID = -952803010396503926L;
private static final Logger log = LoggerFactory.getLogger(sc.class);
private Integer _public;
private Integer _private;
//....
}
私がjsonObjを調べると、私はscオブジェクトでjson全体を見ることができます。 期待どおり、fromJsonメソッドは、フィールド名の不一致のためにscオブジェクトに値を設定できません。
jacksonのようなマッパーを使わないとどうすればいいですか?私はジャクソンにJsonPropertyに相当しGsonパーサの@SerializedNameアノテーションを使用してそこに探していたもの
ここでスタックトレースを共有できますか? – sparrow
解決策が見つかりました... – user3630294