Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java程序中表示JSON文件,用于按键查询值_Java_Json_Gson - Fatal编程技术网

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

在java程序中表示JSON文件,用于按键查询值,java,json,gson,Java,Json,Gson,我想在java程序中表示 我想做的是通过“key”值快速搜索它,例如,给定值P26,我想返回配偶 也许我可以像在程序中一样,使用gson将其作为一个HashMap读入 但如何处理这种不稳定的结构: { “财产”:{ “P6”:“政府首脑”, “P7”:“兄弟”, ... 我怎样才能把它很好地融入到HashMap中呢?HashMap甚至是最好的选择吗 我将其简化为: { “P6”:“政府首脑”, “P7”:“兄弟”, “P9”:“姐妹”, “P10”:“视频”, “P14”:“公路标志”, “

我想在java程序中表示

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

也许我可以像在程序中一样,使用gson将其作为一个
HashMap
读入

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

{
“财产”:{
“P6”:“政府首脑”,
“P7”:“兄弟”,
...
我怎样才能把它很好地融入到
HashMap
中呢?
HashMap
甚至是最好的选择吗


我将其简化为:

{
“P6”:“政府首脑”,
“P7”:“兄弟”,
“P9”:“姐妹”,
“P10”:“视频”,
“P14”:“公路标志”,
“P15”:“路线图”,
“P16”:“公路系统”,
“P17”:“国家”,
“P18”:“图像”,
我试图使用此代码,但它输出
null

/*
*P值文件
*/
字符串jsonTxt_P=null;
File P_Value_File=新文件(“properties es.json”);
//读入P值
if(P_Value_file.exists())
{
InputStream is=新文件InputStream(“properties es.json”);
jsonTxt_P=IOUtils.toString(is);
}
Gson Gson=新的Gson();
类型StringMap=newTypeToken(){}.getType();
Map Map=gson.fromJson(jsonTxt\u P,stringmap);
系统输出打印项次(map);

它不起作用,因为该文件不是
映射。它有一个properties元素(包含映射)和一个缺少的元素(包含数组)。此不匹配将导致Json返回null,这就是您看到的。请改为尝试执行以下操作:

public class MyData {
    Map<String, String> properties;
    List<String> missing;
}
公共类MyData{
地图属性;
清单缺失;
}
然后,要反序列化,请执行以下操作:

MyData data = gson.fromJson(jsonTxt_P, MyData.class);
Map<String, String> stringStringMap = data.properties;
MyData data=gson.fromJson(jsonTxt\u P,MyData.class);
Map stringmap=data.properties;

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

为什么不使用java内置函数的属性?请参阅