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