【发布时间】:2016-05-05 09:13:51
【问题描述】:
我想根据 JSON 对象中的键值检索所有值。
这是我的 JSON 示例:
[{
"zip":544,
"type":"UNIQUE",
"primary_city":"Holtsville",
"acceptable_cities":"",
"unacceptable_cities":"Irs Service Center",
"state":"NY",
"county":"Suffolk County",
"timezone":"America/New_York",
"area_codes":"631",
"latitude":40.81,
"longitude":-73.04,
"world_region":"NA",
"country":"US",
"decommissioned":0,
"estimated_population":0,
"notes":""
},
{
"zip":601,
"type":"STANDARD",
"primary_city":"Adjuntas",
"acceptable_cities":"",
"unacceptable_cities":"Colinas Del Gigante, Jard De Adjuntas, Urb San Joaquin",
"state":"PR",
"county":"Adjuntas",
"timezone":"America/Puerto_Rico",
"area_codes":"787,939",
"latitude":18.16,
"longitude":-66.72,
"world_region":"NA",
"country":"US",
"decommissioned":0,
"estimated_population":0,
"notes":""
}]
所以基于我的邮政编码作为键,我想检索所有其他值。
我曾为具有单个键值对的 JSON 对象尝试过相同的操作,但不知道如何对上述 JSON 对象执行此操作。
这是我成功运行的单键值对代码
import java.util.HashMap;
import java.util.Iterator;
import org.json.JSONObject;
public class map {
public static void main(String[] args) {
String t = "{\"A\":\"A1\",\"B\":\"B1\",\"C\":\"C1\"}";
HashMap<String, String> map = new HashMap<String, String>();
JSONObject jObject = new JSONObject(t);
Iterator<?> keys = jObject.keys();
while( keys.hasNext() ){
String key = (String)keys.next();
String value = jObject.getString(key);
map.put(key, value);
}
System.out.println("json : "+jObject);
System.out.println("map : "+map.get("A"));
}
}
输出:
json : {"A":"A1","B":"B1","C":"C1"}
map : A1
有什么建议吗?
我之前看过几个答案,但都没有解决这个问题?
【问题讨论】:
-
你的 JSON 是一个对象数组吗?
-
是的..在我的问题中编辑了 JSON 以便更清楚
-
请。检查我的答案,这会有所帮助。
-
您可以使用jackson objectmapper,而不是编写自己的逻辑来将json转换为map。检查这个 - mkyong.com/java/how-to-convert-java-object-to-from-json-jackson