2016-12-27 18 views
0

私はcordovaプラグインを作成しようとしています。 私は次のようなJSONデータました:Javaでjsonを正しく反復処理するにはどうすればよいですか?

JSONObject obj = {"amount":100, "desc":"blabla",id:123} 

と私はJSONのキーを反復処理し、intent.putExtra(key,val)

例にキーと値を入れしようとしている:私はこのコードで

Iterator<String> iter = obj.keys(); 
while (iter.hasNext()) { 
    key = iter.next(); 
    value = obj.getString(key); 
    intent.putExtra(key, value); 
} 

をエラーを取得する

error: cannot find symbol intent.putExtra(key, value); 

誰でも私は正しいと言うことができますJSONデータを繰り返し、putExtra()を実行しますか?

+2

「インテント」を作成する場所は? –

+0

これを見てください。それは確かにあなたを助けるでしょう。 http://stackoverflow.com/questions/30395281/is-there-a-equivalent-to-json-net-in-java –

+0

インテントオブジェクトを最初に作成する –

答えて

0

最初に指定したjsonは無効です。

{"amount":100, "desc":"blabla","id":123} 

次に、コメントの中で述べたように、forループの外側にインテント変数を作成します。 と値は文字列または整数にすることができるので、最終的に、あなたは

Object value = obj.get(key) 

を使用する必要があります。

0

リノの回答への拡張。

Intent.putExtra(String, Object)は利用できません。次の変更が必要です。

 JSONObject obj = new JSONObject("{" + 
       "\"amount\": 100," + 
       "\"desc\": \"blabla\"," + 
       "\"id\": 123," + 
       "\"id2\": 123.56" + 
       "}"); 

     Intent intent = new Intent(); 
     Iterator<String> iter = obj.keys(); 
     while (iter.hasNext()) { 
      String key = iter.next(); 
      Object value = obj.get(key); 
      if (value instanceof Float || value instanceof Double) { 
       intent.putExtra(key, (double) value); 
      } else if (value instanceof Integer || value instanceof Long) { 
       intent.putExtra(key, (long) value); 
      } else if (value instanceof String) { 
       intent.putExtra(key, (String) value); 
      } /*else if (more cases go here) { 

      } */ 
     } 
関連する問題