JSONを解析している次の状況に直面しています。非整列化したい JSON には、次のような数値 (double) の配列が含まれています。
"position":[52.50325,13.39062]
したがって、名前と値のペアはありません。
問題は、この配列の値を取得できないことです。JSON をモデル化する Java オブジェクトで、位置属性を Double のリストとして定義しましたList<Double>
が、アンマーシェル後、位置属性は常に null です。
テスト目的で、JSON の内容を次のように変更しました。
position: [„52.50325“ ,“ 13.39062“ ]
問題はありません。2つの要素を持つリストを取得します。(ちなみに、これは、位置が String のリストまたは Double のリスト (List<String>
またはList<Double>
) として定義されているかどうかに関係なく発生します)
したがって、回避策として、JSON 応答を変更し、この数字をアンマーシャリングする前に文字列としてマークすることができますが、それを避けたいのですが、数値配列の値を取得する解決策があるかどうか疑問に思っていますか?
コードのスナップショットを次に示します。
ResultsListDO.java
:
@XmlElement(required = true)
protected List<Double> position;
public List<Double> getPosition()
{
if (position == null) {
position = new ArrayList<Double>();
}
return this.position;
}
JSON アンマーシャリング:
context = new JSONJAXBContext(JSONConfiguration.mapped().build(), ResultsListDO.class);
JSONUnmarshaller um = context.createJSONUnmarshaller();
ResultsListDO resultsList = um.unmarshalFromJSON(source.getReader(), ResultsListDO.class);