2016-08-28 3 views
2

JSONレスポンス(名前、緯度、経度)から3つの値を保持して、マップアクティビティに渡してgmaps内のマーキングを行います。 しかし、List Pair(String、String)は2つの文字列引数しか取ることができません。どのように、3つの引数を持つリストのペアを持つ。 result.toStringここでは最初の回答JSONArrayから来る3つの値を含むペアオブジェクト

InputStream in = conn.getInputStream(); 
     Log.v("Tag","Success"); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
     StringBuilder result = new StringBuilder(); 
     String line; 
     while((line = reader.readLine()) != null) { 
      result.append(line); 
     } 

if(result != null){ 
      List<Pair<String, String>> allNames = new ArrayList<>(); 
      try 

      { 
       JSONArray jsonArray = new JSONArray(result.toString()); 
       for (int i=0; i<result.toString().length(); i++) { 
        JSONObject jobj = jsonArray.getJSONObject(i); 
        String name = jobj.getString("NAME"); 
        String latitude = jobj.getString("LATITUDE"); 
        String Longitude = jobj.getString("LONGITUDE"); 
        allNames.add(Pair.create(name, latitude)); 
       } 

      } catch (JSONException e) { 
       Log.e("JSON Parser", "Error parsing data " + e.toString()); 
      } 
} 

を取得した後、

///編集コードは()私の出力が含まれています。例えば

[{"MANDT":"200","NAME":"SOU1","LATITUDE":"37.2968812","LONGITUDE":"-81.2344122","CHANGE_TIME":"163724","CHANGE_DATE":"20160826"},{"MANDT":"200","NAME":"ss1","LATITUDE":"29.233232","LONGITUDE":"-81.23","CHANGE_TIME":"174709","CHANGE_DATE":"20160828"}] 

答えて

3

はあなたが望むものを、このです:

List<Pair<String, String>> filedList = new ArrayList<>(); 
JSONObject jsonObject = new JSONObject(result); 
try { 
    String status = jsonObject.getString("STATUS"); 
    filedList.add(new Pair<String, String>("STATUS", status)); 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

あなたが更新した後、私はあなたのJSONデータが少し複雑になるので、JSONObjectの使用はあまり適切になる参照してください。

私の提案は、目的のためにjsonライブラリを使用することです。GSONは良い選択です。

+0

正しい方向を教えていただきありがとうございます。今、私はペアとして3つの値をし、配列として保持します。何か案は? –

関連する問題