0

私はJSONパーサーにかなり慣れていないので、「sizes」タグからすべてのデータセットを抽出しようとしています。つまり、複雑なネストされたループでJSONファイルから値(small、yes、xsmall、NO、Medium、yes)を抽出しようとしていますが、仕事。GSONを使用してJSONファイルを解析し、プログラミング言語としてJAVAを使用しています

ここでは、JSONファイルが一般的にどのように見えるかを示します

{ response: "ok",
  prodinfo: {
    sizes: [ 
      { size:"small", 
        available: "yes"
      }, 
      { size:"xsmall", 
        available: "No"
      },
      { size:"Medium", 
        available: "yes"
      }
    ]
  }
}

これは私がしたことです

int array = jsonParser14.parse(json14).getAsJsonObject().get("ProdInfo").getAsJsonObject().getAsJsonArray("sizes").size();
JsonArray sizes = (JsonArray) jsonParser15.parse(json15).getAsJsonObject().get("ProdInfo").getAsJsonObject().getAsJsonArray("sizes");
for (int i = 0; i <= array; i++) {
    String size = sizes.get(i).getAsString();
    System.out.println("data extracted are: " + size);
}

あなたの助けをいただければ幸いです。ありがとう

4

2 に答える 2

1

私は通常、必要なフィールドを持つ public クラスを作成することでこれを処理します。

public class ProdSize {
    public String size;
    public String available;
}

public class ProdInfo {
    public ProdSize[] sizes;
}

public class Message {
    public String response;
    public ProdInfo prodinfo;
}

そして、 gson でこれを行うだけです:

Gson gson = new GsonBuilder().create();
Message mess = gson.fromJson(theJsonString, Message.class);

次に、JSON を解析するために行うループはありません。私は自分のサイズを直接持っています

mess.prodinfo.sizes

たとえば、このように印刷できます

for (int i=0; i<mess.prodinfo.sizes.length; i++) {
   ProdSize size = mess.prodinfo.sizes[i];
   System.out.println("Size " + size.size + " -> " + size.available);
}
于 2012-05-22T15:56:21.940 に答える
0

何かのようなもの:

var sizes = json.prodinfo.sizes;
for (item in sizes) {
    if (sizes.hasOwnProperty(item)) {
        var isAvailable = sizes[item].available;
        alert(isAvailable);
    }

}​

ここでの例:http://jsfiddle.net/nG88B/3/

編集:最初にJSONを解析する必要があるようです。その場合(有効な場合)、次のことができます。

var obj = JSON.parse(jsonStr);
于 2012-05-22T15:51:03.153 に答える