gpt4 book ai didi

java - java中从json字符串中提取值

转载 作者:行者123 更新时间:2023-12-01 14:30:54 30 4
gpt4 key购买 nike

我有一个 json 格式的字符串,我想从该 json 中提取某些值。例如:

{"foo":"this is foo", "bar":{"nested_bar": "this is nested bar"} }

用户可能想要打印 foobar 或两者。

现在,我有一个简单的类,它只能读取平面 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 对象。因此,一个简单的开始方法是编写一个解析器,它只获取键及其关联值作为字符串,而不处理这些值。然后,对每个值再次调用相同的算法 - 依此类推,直到得到一个只是普通值的值 - 字符串、数字等。

关于java - java中从json字符串中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16863447/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com