我想保留 JSON 响应中的 3 个值(名称、纬度和经度)并将其传递给 map Activity 以在 gmap 中进行标记。 但是,List Pair(String,String) 只能采用 2 个字符串参数。如何获得一个包含 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());
}
}
这里 result.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"}]
最佳答案
这是你想要的吗:
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
是一个不错的选择。
关于java - 将对象配对以包含来自 JSONArray 的 3 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39196136/