2

変数を使用する場合、JSON オブジェクトから名前/値のペアを取得できませんが、名前をハードコーディングする場合は読み取ることができます。

よりよく説明するには:

1) 私の JSON オブジェクトは次のようになります - {..... { "rates":{ "name1": value1, "name2": value2 ...etc } ...}

2) Android アプリでこのオブジェクトを読み取ることができます。

3)今、このレートオブジェクト名と値のペア、私はユーザー入力に基づいて読み取ろうとしています -

          String s1 = '"'+name1+'"';  // here name1 i got from user input, & converted into string

4)料金オブジェクトから値を取得しようとすると、null 例外が発生します -

            JSONObject rateObject = jObject.getJSONObject("rates");  //able to get  
                                                                    complete object

            String rate1 = (String) rateObject.get(s1); // giving NULL exception

5)しかし、ハードコード文字列を使用すると、機能します-

            String rate1 = (String) rateObject.get("name1"); // working

変数の使用中に機能しない理由を示すポインタ。

ありがとう


提案をありがとう、私は問題を整理しました。私が行っていた2つの間違いがあります-1)他の人が正しく指摘したように引用符を使用し、2)二重値を文字列にキャストします。両方を修正すると、私の問題は解決しました:)

4

2 に答える 2

1

最終的なコード スニペットに関しては、実際に行っている

String rate1 = (String) rateObject.get("\"name1\""); //note the extra quotes

ユーザー入力文字列を二重引用符で予約したためです。ブックエンドのない入力文字列自体が必要なだけです。JSON 表記の引用符は、各キー名を表すのに役立ちます。引用符はキー名自体の一部ではありません。

を作成するときは、引用符を省略する必要がありますs1

String s1 = name1;

または、name1まだ文字列でない場合:

String s1 = name1.toString();
于 2012-11-09T00:14:11.493 に答える
0

交換:

String s1 = '"'+name1+'"';

と:

String s1 = name1;
于 2012-11-09T00:16:06.410 に答える