を特定のデータを取得することは、私のJSONファイルです:私は単にこのJSON(「1453150800」のような値が含まれ、内側1、「だけから「データ」の配列を取得したいJSONファイルからここ
{
"success":true,
"data":{
"charts":[
],
"title":"Dane pomiarowe dla stacji Nowa Huta w dniu 18.01.2016 r.",
"unitLabel":"µg\/m<sup>3<\/sup>",
"series":[
{
"label":"Py\u0142 zawieszony PM10",
"measType":"auto",
"paramLabel":"Py\u0142 zawieszony PM10",
"paramId":"pm10",
"paramCode":"PM10",
"paramPostfix":"",
"aggType":"A1h",
"ord":7,
"interval":3600,
"count":24,
"retroCount":2,
"startTime":1453075200,
"extStartTime":1453068000,
"coverageRate":0.75,
"isAvgValid":true,
"thresholds":{
"at":null,
"it":null,
"tv":null,
"lv":null,
"atDecimals":0,
"itDecimals":0,
"tvDecimals":0,
"lvDecimals":0
},
"data":[
[
"1453068000",
"103.298"
],
[
"1453071600",
"91.7082"
],
[
"1453075200",
"77.0336"
],
[
"1453078800",
"64.5983"
],
[
"1453082400",
"63.8732"
],
[
"1453086000",
"70.7411"
],
[
"1453089600",
"53.5375"
],
[
"1453093200",
"34.263"
],
[
"1453096800",
"41.0388"
],
[
"1453100400",
"67.2149"
],
[
"1453104000",
"92.7306"
],
[
"1453107600",
"99.2169"
],
[
"1453111200",
"48.8264"
],
[
"1453114800",
"33.3165"
],
[
"1453118400",
"36.2634"
],
[
"1453122000",
"28.4299"
],
[
"1453125600",
"28.5989"
],
[
"1453129200",
"39.2745"
],
[
"1453132800",
"50.3268"
],
[
"1453136400",
"100.369"
],
[
"1453140000",
"110.177"
],
[
"1453143600",
"106.337"
],
[
"1453147200",
"81.9495"
],
[
"1453150800",
"67.9702"
],
[
"1453154400",
"77.114"
],
[
"1453158000",
"115.15"
]
],
"avg":{
"avg":"66.1813",
"min":"28.4299",
"max":"115.15"
},
"thresholdsForAvg":{
"avg":{
"at":300,
"it":200,
"tv":null,
"lv":50,
"atDecimals":0,
"itDecimals":0,
"tvDecimals":0,
"lvDecimals":0
},
"min":null,
"max":null
},
"decimals":0,
"unit":"ug\/m3",
"unitLabel":"µg\/m<sup>3<\/sup>",
"scaleMin":null,
"scaleMax":null,
"chartTooltipContent":"%y.# %ly o godz. %x"
}
],
"dateFormat":"H:00",
"viewType":"station"
}
}
67.9702」)。
これは私が(ポール・ヒックスからの助けを借りて)これまでのコード化されたものです:
static class Measurement {
int time;
double pm;
public String toString() {
return "Time: " + time + " Pm: " + pm;
}
}
static class Measurements {
List<Measurement> data;
}
...
String str = "{\"success\":true,\"data\":{\"charts\":[],\"title\":\"Dane pomiarowe dla stacji Nowa Huta w dniu 18.01.2016 r.\",\"unitLabel\":\"µg\\/m<sup>3<\\/sup>\",\"series\":[{\"label\":\"Py\\u0142 zawieszony PM10\",\"measType\":\"auto\",\"paramLabel\":\"Py\\u0142 zawieszony PM10\",\"paramId\":\"pm10\",\"paramCode\":\"PM10\",\"paramPostfix\":\"\",\"aggType\":\"A1h\",\"ord\":7,\"interval\":3600,\"count\":24,\"retroCount\":2,\"startTime\":1453075200,\"extStartTime\":1453068000,\"coverageRate\":0.75,\"isAvgValid\":true,\"thresholds\":{\"at\":null,\"it\":null,\"tv\":null,\"lv\":null,\"atDecimals\":0,\"itDecimals\":0,\"tvDecimals\":0,\"lvDecimals\":0},\"data\":[[\"1453068000\",\"103.298\"],[\"1453071600\",\"91.7082\"],[\"1453075200\",\"77.0336\"],[\"1453078800\",\"64.5983\"],[\"1453082400\",\"63.8732\"],[\"1453086000\",\"70.7411\"],[\"1453089600\",\"53.5375\"],[\"1453093200\",\"34.263\"],[\"1453096800\",\"41.0388\"],[\"1453100400\",\"67.2149\"],[\"1453104000\",\"92.7306\"],[\"1453107600\",\"99.2169\"],[\"1453111200\",\"48.8264\"],[\"1453114800\",\"33.3165\"],[\"1453118400\",\"36.2634\"],[\"1453122000\",\"28.4299\"],[\"1453125600\",\"28.5989\"],[\"1453129200\",\"39.2745\"],[\"1453132800\",\"50.3268\"],[\"1453136400\",\"100.369\"],[\"1453140000\",\"110.177\"],[\"1453143600\",\"106.337\"],[\"1453147200\",\"81.9495\"],[\"1453150800\",\"67.9702\"],[\"1453154400\",\"77.114\"],[\"1453158000\",\"115.15\"]],\"avg\":{\"avg\":\"66.1813\",\"min\":\"28.4299\",\"max\":\"115.15\"},\"thresholdsForAvg\":{\"avg\":{\"at\":300,\"it\":200,\"tv\":null,\"lv\":50,\"atDecimals\":0,\"itDecimals\":0,\"tvDecimals\":0,\"lvDecimals\":0},\"min\":null,\"max\":null},\"decimals\":0,\"unit\":\"ug\\/m3\",\"unitLabel\":\"µg\\/m<sup>3<\\/sup>\",\"scaleMin\":null,\"scaleMax\":null,\"chartTooltipContent\":\"%y.# %ly o godz. %x\"}],\"dateFormat\":\"H:00\",\"viewType\":\"station\"}}";
JsonParser parser = new JsonParser();
JsonObject element = (JsonObject)parser.parse(str);
JsonElement responseWrapper = element.getAsJsonObject("data")
.getAsJsonArray("series").get(0)
.getAsJsonObject().get("data");
Gson gson = new Gson();
Measurements measurements = gson.fromJson(responseWrapper, Measurements.class);
for (Measurement m : measurements.data) System.out.println(m);
私はエラーを取得:行で
IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY
:
Measurements measurements = gson.fromJson(responseWrapper, Measurements.class);
リストオブジェクトではなく、リストの内容を印刷してみます。 'for(測定m:測定値){System.out.println(m.pm); } '。これらのクラスにいくつかのtoStringメソッドも追加する必要があります。 –
あなたが提供したコードを使用してNullPointerExceptionを取得します。申し訳ありませんが、私はJavaの初心者です。私のクラスにtoStringメソッドを追加するには?ゲッターのように見えますか? – Defozo
JSONには2つの 'data'要素があります。あなたのコードは、最初のコードを抽出していますが、2番目のコードは抽出していません。また、@ Paul Hicksの言葉通り、Measurementsオブジェクトをそのまま印刷することはできません。囲まれた変数/配列を出力するMeasurements and MeasurementにtoString()メソッドを記述します。 – Jason