2

サードパーティのAPIに接続して、長いJSON文字列を取得しています。必要な値は1つだけですが、階層のかなり奥にあります。すべてを実行せずに、それを取得する簡単な方法はありますか?全体を見渡したが、簡単なことは何もないようだ。

これが私の例です:

"response":{"status":1,"httpStatus":200,"data":{"myDesiredInfo":"someInfo"},"errors":[],"errorMessage":null}}

このblobをJsonObjectとして取得できるように、Gsonを使用しようとしています。私はこのような単純なものがあると確信していました:

jsonObject.get("myDesiredInfo") 

または少なくとも次のようなもの:

jsonObject.get("response.data.myDesiredInfo") 

しかし、それは存在しないようです。

それで、私がこれを行うことを可能にするパーサーはありますか?

4

4 に答える 4

4

次の方法で、jsonObject から取得できます。

JSONObject jObject = new JSONObject(yourresponse);
Log.i("Desired Info is ",jObject.getJSONObject("response").getJSONObject("data").getString("myDesiredInfo"));
于 2013-02-07T12:56:54.797 に答える
4

これは私のjson文字列です

String s="{"age":0,"name":"name","email":"emailk","address":{"housename":"villa"}}";

次のコードを使用して家の名前を取得します

    JsonElement je = new JsonParser().parse(s);
    JsonObject asJsonObject = je.getAsJsonObject();
    JsonElement get = asJsonObject.get("address");
    System.out.println(s + "\n" + get);
    JsonObject asJsonObject1 = get.getAsJsonObject();
    JsonElement get1 = asJsonObject1.get("housename");
    System.out.println(get1);

以下は私の出力です:

{"age":0,"name":"name","email":"emailk","address":{"housename":"villa"}}
{"housename":"villa"}
"villa"

これを行う別の方法はないと思います。他の方法でもやろうとしましたが、出力が得られませんでした。

于 2013-02-07T10:31:57.227 に答える
0

ほとんどの言語には JSON デコード ライブラリがあり、その多くはネイティブです。使用している言語がわからないので、例として PHP を示します。

$jsonObj = json_decode($json);
$json->response->data->myDesiredInfo;

Ruby、Python、Java - これらすべての言語には優れたライブラリがあります。

于 2013-02-07T10:36:41.493 に答える