gpt4 book ai didi

java - 在用于按键查询值的 Java 程序中表示 JSON 文件

转载 作者:搜寻专家 更新时间:2023-10-31 20:33:43 24 4
gpt4 key购买 nike

我要代表this file在我的java程序中。

我想做的是通过“键”值快速搜索它,例如,给定值 P26 我想返回 spouse

也许我可以像使用 this 一样使用 gson 将其作为 HashMap 读取程序。

但是如何处理这个不稳定的结构:

{
"properties": {
"P6": "head of government",
"P7": "brother",
...

我如何才能将它很好地放入 HashMap 中? HashMap 是最好的选择吗?


我已经将其简化为:

{
"P6": "head of government",
"P7": "brother",
"P9": "sister",
"P10": "video",
"P14": "highway marker",
"P15": "road map",
"P16": "highway system",
"P17": "country",
"P18": "image",

我试过使用这段代码,但它输出null

/*
* P values file
*/
String jsonTxt_P = null;

File P_Value_file = new File("properties-es.json");
//read in the P values
if (P_Value_file.exists())
{
InputStream is = new FileInputStream("properties-es.json");
jsonTxt_P = IOUtils.toString(is);
}

Gson gson = new Gson();
Type stringStringMap = new TypeToken<Map<String, String>>(){}.getType();
Map<String,String> map = gson.fromJson(jsonTxt_P, stringStringMap);
System.out.println(map);

最佳答案

它不起作用,因为该文件不是 Map<String, String> .它有一个包含映射的属性元素和一个包含数组的缺失元素。这种不匹配将导致 Json 返回 null,这就是您所看到的。相反,请尝试这样做:

public class MyData {
Map<String, String> properties;
List<String> missing;
}

然后,要反序列化,请执行以下操作:

MyData data = gson.fromJson(jsonTxt_P, MyData.class);
Map<String, String> stringStringMap = data.properties;

这将使数据结构匹配json的结构,并允许json正确反序列化。

关于java - 在用于按键查询值的 Java 程序中表示 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29924481/

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