从java中的json字符串中提取值
我有一个json格式的字符串,我想从该json中提取某些值。 例如:从java中的json字符串中提取值,java,json,Java,Json,我有一个json格式的字符串,我想从该json中提取某些值。 例如: {"foo":"this is foo", "bar":{"nested_bar": "this is nested bar"} } 用户可能希望打印foo或bar,或同时打印两者 现在,我有一个简单的类,它只能读取平面json 如何修改以下代码以合并嵌套的json 另一个问题是,用什么好的方法来表示我想要提取的标签,就像在平面json中一样?我正在传递一个数组 public class JsonParser { publ
{"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;
}
}
公共类JsonParser{
公共静态字符串[]tagsToExtract;
公共JsonParser(字符串[]标记){
tagsToExtract=标签;
}
公共HashMap extractInformation(文本行)抛出JSONException{
HashMap outputHash=新建HashMap();
JSONObject jsn=新的JSONObject(line.toString());
for(int i=0;i
有相当多的Java JSON库可以完全满足您的需要。以下是一些更受推崇的观点:
- 格森:
- JSONLib:
{
prop1: (some value),
prop2: (some value),
...
}
请注意,当您开始解析顶级对象时,您所做的与解析每个值时所做的完全相同,因为值本身可能只是另一个JSON对象。因此,一个简单的入门方法是编写一个解析器,它只获取键及其关联值作为字符串,而不处理这些值。然后,对每个值再次调用相同的算法——以此类推,直到得到一个纯值——一个字符串、一个数字等等。您是否考虑过使用JSON解析库,例如Jackson?是的,如果您访问JSON.org,它会列出大约12个Java JSON解析器。