我需要在JSP中创建多维HashMap或Hashtable的帮助。为什么我需要HashMap或HashTable?因为我最终想将一个JSON对象传递回客户端。如果还有另一种最终到达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" } ] } ] }
这是我的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。
{}
Map
[]
List
因此,要实现以下JSON格式,
你需要( 深呼吸 )Map<String, List<Map<String, List<Map<String, String>>>>>。
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!
更好的是只使用完全有价值的Javabeans代替Map<String, String>。
Map<String, String>