gpt4 book ai didi

java - 如何在 JSP/Java 中创建多维 HashMap 或 Hashtable 并将其转换为 JSON 对象?

转载 作者:行者123 更新时间:2023-11-30 05:57:15 24 4
gpt4 key购买 nike

我需要帮助在 JSP 中创建多维 HashMap 或 Hashtable。为什么需要 HashMap 或 HashTable?因为我最终想向客户端传回一个 JSON 对象。如果有其他方法最终得到 JSON 对象,我会洗耳恭听。

我还想提一下,这条线索非常宝贵,我一直在扩展它:

How can I write a multidimensional JSON object in JSP and pass the JSON object back to JavaScript?

这是我想要的结果:

{
"results": [ {
"address_components": [ {
"long_name": "1600",
"short_name": "1600"
}, {
"long_name": "Amphitheatre Pkwy",
"short_name": "Amphitheatre Pkwy"
}, {
"long_name": "Mountain View",
"short_name": "Mountain View"
}, {
"long_name": "California",
"short_name": "CA"
}, {
"long_name": "United States",
"short_name": "US"
}, {
"long_name": "94043",
"short_name": "94043"
} ]
} ]
}

这是我的 JSP 代码,它使用了一个简单的示例,而不是像上面这样的实际数据:

Hashtable results_hash = new Hashtable();   
Hashtable numbers = new Hashtable();
Hashtable[] arr = new Hashtable[10];

for (int i=0; i < 10; i++)
{
numbers.put("Number",i);
numbers.put("Numberx2",i*2);
arr[i] = new Hashtable();
arr[i].put("Comp",numbers);
results_hash.put("results",arr[i]);
}

com.google.gson.Gson gson = new com.google.gson.Gson();
String json = gson.toJson(results_hash);
out.print(json);

但是 JSON 对象看起来像这样:

{
"results": {
"Comp": {
"Numberx2":18,
"Number":9
}
}
}

这不是想要的结果。它只获取最后的结果并将其转换为 JSON。因此,问题始于未正确构建多维哈希。但我不确定问题是什么。我希望得到一些帮助。谢谢。

最佳答案

在 JSON 中,{}可映射为 Java Map[]可映射为 Java List .

所以,要实现如下JSON格式,

{
"results": [ {
"address_components": [ {
"long_name": "1600",
"short_name": "1600"
}, {
"long_name": "Amphitheatre Pkwy",
"short_name": "Amphitheatre Pkwy"
}, {
"long_name": "Mountain View",
"short_name": "Mountain View"
}, {
"long_name": "California",
"short_name": "CA"
}, {
"long_name": "United States",
"short_name": "US"
}, {
"long_name": "94043",
"short_name": "94043"
} ]
} ]
}

你需要(深呼吸)Map<String, List<Map<String, List<Map<String, String>>>>> .

List<Map<String, String>> addressComponents = new ArrayList<Map<String, String>>();
Map<String, String> addressComponent1 = new HashMap<String, String>();
addressComponent1.put("long_name", "1600");
addressComponent1.put("short_name", "1600");
addressComponents.add(addressComponent1);
Map<String, String> addressComponent2 = new HashMap<String, String>();
addressComponent2.put("long_name", "Amphitheatre Pkwy");
addressComponent2.put("short_name", "Amphitheatre Pkwy");
addressComponents.add(addressComponent2);
// ...

List<Map<String, List<Map<String, String>>>> results = new ArrayList<Map<String, List<Map<String, String>>>>();
Map<String, List<Map<String, String>>> result1 = new HashMap<String, List<Map<String,String>>>();
result1.put("address_components", addressComponents);
results.add(result1);
// ...

Map<String, List<Map<String, List<Map<String, String>>>>> god = new HashMap<String, List<Map<String,List<Map<String,String>>>>>();
god.put("results", results);
String json = new Gson().toJson(god);
System.out.println(json); // There!

更好的是只使用完整的 Javabean 而不是 Map<String, String> .

关于java - 如何在 JSP/Java 中创建多维 HashMap 或 Hashtable 并将其转换为 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5981647/

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