将对象包含来自JSONArray的3个值

时间:2016-08-28 21:52:56

标签: java android json

我希望保留JSON Response(Name,Latitude和Longitude)中的3个值,并将其传递给maps活动以在gmaps中进行标记。 但是,List Pair(String,String)只能使用2个字符串参数。如何,拥有一个包含3个参数的列表对。

///获得第一个答案后编辑的代码

 $scope.colorType = function() {
 $http.get('stuff.json').then(function(response) {
     $scope.colorSelected = response.data.type[$scope.Color];

 });
}

 $scope.shapeType = function() {
     $http.get('shapes.json').then(function(response) {
         $scope.shapeSelected = response.data[$scope.Color][$scope.Shape]; 
     });
 }

这里result.toString()包含我的输出。例如

 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());
           }
}

1 个答案:

答案 0 :(得分: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是一个不错的选择。