如何根据json字符串的同级值在java中解析json字符串
我有键值对,其中值是json数组 我需要对这个json进行解析,以根据本例中需要的名称值获得输出 输入 输出如何根据json字符串的同级值在java中解析json字符串,java,Java,我有键值对,其中值是json数组 我需要对这个json进行解析,以根据本例中需要的名称值获得输出 输入 输出 {"123": ["v1","v2"]} 与Map类似,您需要解析对象123和更高版本的对象列表{name:…,value:…} JSONParser parser = new JSONParser(); try { Object obj = parser.parse(new FileReader("*.json")); JSONObje
{"123": ["v1","v2"]}
与Map类似,您需要解析对象123和更高版本的对象列表{name:…,value:…}
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(new FileReader("*.json"));
JSONObject jsonObject = (JSONObject) obj;
String name = (String) jsonObject.get("name");
long value = (Long) jsonObject.get("value");
// loop array
JSONArray msg = (JSONArray) jsonObject.get(" name of 123 ");
Iterator<String> iterator = msg.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
嘿,您可以使用Json简单库来实现这一点。从下载jar。以下是特定情况下的代码片段,您将如何解析只应在列表中添加所需名称值的对象:
try{
JSONParser parser = new JSONParser();
JSONObject jsonObject = (JSONObject) parser.parse("{\"123\" : [{\"name\" : \"wanted\", \"value\" : \"v1\" }, {\"name\" : \"wanted\", \"value\" : \"v2\" }, {\"name\" : \"unwanted\", \"value\" : \"v3\" }]}");
JSONArray jsonArray = (JSONArray) jsonObject.get("123");
List<String> valueList = new ArrayList<>();
for(int i=0;i<jsonArray.size();i++){
JSONObject o = (JSONObject) jsonArray.get(i);
if(o!=null && "wanted".equals(o.get("name"))){
String value = (String) o.get("value");
valueList.add(value);
}
}
Map<String,List<String>> map = new HashMap<>();
map.put("123",valueList);
System.out.println(map);
}catch(Exception e){
}
首先你可以在这里看到:对不起,你的问题很不清楚。您是否正在尝试从带有'name:dispured'的数组项中筛选,并从所需的数组项中仅获取值?如果是,那么输出可能是123[v2,v3]。您尝试过什么吗?
try{
JSONParser parser = new JSONParser();
JSONObject jsonObject = (JSONObject) parser.parse("{\"123\" : [{\"name\" : \"wanted\", \"value\" : \"v1\" }, {\"name\" : \"wanted\", \"value\" : \"v2\" }, {\"name\" : \"unwanted\", \"value\" : \"v3\" }]}");
JSONArray jsonArray = (JSONArray) jsonObject.get("123");
List<String> valueList = new ArrayList<>();
for(int i=0;i<jsonArray.size();i++){
JSONObject o = (JSONObject) jsonArray.get(i);
if(o!=null && "wanted".equals(o.get("name"))){
String value = (String) o.get("value");
valueList.add(value);
}
}
Map<String,List<String>> map = new HashMap<>();
map.put("123",valueList);
System.out.println(map);
}catch(Exception e){
}