![](/img/trans.png)
[英]Extract json string array value from json object using java
[英]extract value from json string in java
我有一个json格式的字符串,我想从该json中提取某些值。 例如:
{"foo":"this is foo", "bar":{"nested_bar": "this is nested bar"} }
用户可能要打印foo
或bar
或两者都打印。
现在,我有一个简单的类,它只能读取平面json。
如何修改以下代码以合并嵌套的json?
另一个问题是什么是表示要提取为平面json的标签的好方法? 我正在传递数组。
public class JsonParser {
public static String[] tagsToExtract;
public JsonParser(String[] tags){
tagsToExtract = tags;
}
public HashMap<String, Object> extractInformation(Text line) throws JSONException{
HashMap<String, Object> outputHash = new HashMap<String, Object>();
JSONObject jsn = new JSONObject(line.toString());
for (int i =0; i < tagsToExtract.length; i++){
outputHash.put(tagsToExtract[i],jsn.get(tagsToExtract[i].toString()));
}
return outputHash;
}
}
有很多Java JSON库可以完全满足您的要求。 一些比较受人尊敬的是:
您可以在此处找到有关各种选项的更深入讨论: https : //stackoverflow.com/questions/338586/a-better-java-json-library
但是,如果您真的有兴趣为其编写自己的解析器,那么我将给出的提示是利用递归。 假设您有一个类似以下内容的JSON对象:
{
prop1: (some value),
prop2: (some value),
...
}
请注意,当您开始解析顶级对象时,您将执行与解析每个值时完全相同的操作-因为这些值本身可以只是另一个JSON对象。 因此,一种简单的入门方法是编写一个解析器,该解析器仅将键及其关联的值作为字符串获取,而无需处理这些值。 然后,对每个值再次调用相同的算法-依此类推,直到得到一个纯值(字符串,数字等)的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.