我正在尝试使用相应的键/值对创建一个 JSON 字符串。在下面的代码中,我尝试迭代 的列表,AttributeValue然后尝试使用al.getValue map.
private <T> String createJsonWithEscCharacters(List<AttributeValue<T>> list) {
StringBuilder keyValue = new StringBuilder();
if (list != null) {
for (AttributeValue<?> al: list) {
keyValue.append("\"").append("v").append("\"").append(":").append(" {");
for (Map.Entry<String, String> entry : ((Map<String, String>) al.getValue()).entrySet()) {
keyValue.append("\"").append(entry.getKey()).append("\"");
keyValue.append(":").append(" \"").append(entry.getValue()).append("\"").append(",");
System.out.println(keyValue);
}
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
当我检查的al,我看到的value是LinkedHashMap<K,V>,当我打印al.getValue(),它给了我这-
{predictedCatRev=0;101;1,1;201;2, predictedOvrallRev=77;2,0;1,16;3, sitePrftblty=77;2,0;1671679, topByrGms=12345.67, usrCurncy=1, vbsTopByrGmb=167167.67}
Run Code Online (Sandbox Code Playgroud)
这意味着,我可以迭代al.getValue()地图并使用它们key/value pair来制作 JSON 字符串。
现在我试图通过迭代al.getValue()地图来制作一个 JSON 字符串。所以 JSON 字符串在迭代al.getValue()地图后应该看起来像这样 -
{
"lv": [
{
"v": {
"predictedCatRev": "0;101;1,1;201;2",
"predictedOvrallRev": "77;2,0;1,16;3",
"sitePrftblty": "77;2,0;1671679",
"topByrGms": "12345.67",
"usrCurncy": "1",
"vbsTopByrGmb": "167167.67"
}
}
],
}
Run Code Online (Sandbox Code Playgroud)
我想知道最干净的方法是什么?在我上面的代码中,我不能完全生成上面的 JSON 字符串,但是无论我上面有什么代码,它都可以按照我需要的方式生成 JSON 字符串的一小部分,但不是完整的 JSON 字符串,我是寻找。任何人都可以帮我解决这个问题,比如最干净的方法是什么?
谢谢
不确定您正在执行的具体任务是什么,但是有许多适用于 Java 的 JSON 库可以为您执行此操作,例如java 中的 json和google-gson。例如,在 java 中的 json 中,一旦您填充了其JSONObject 中的所有值,然后将其转换为 JSON 字符串就相当容易:
JSONObject.toString(); // compact JSON string
JSONObject.toString(int indent); // easier readable format with indention.
Run Code Online (Sandbox Code Playgroud)
例如,在您的情况下,您可以创建如下所示的 JSONObject 并调用其 toString() 函数。这可以节省您将字符串格式化为 JSON 格式的时间:
JSONObject jsonObject = new JSONObject();
Map<String, String> strStrMap = new HashMap<String, String>();
strStrMap.put("hello", "world");
strStrMap.put("here is", "an example");
jsonObject.put("myMap", strStrMap);
System.out.println(jsonObject.toString(2));
Run Code Online (Sandbox Code Playgroud)
这是它的输出:
{"myMap": {
"hello": "world",
"here is": "an example"
}}
Run Code Online (Sandbox Code Playgroud)
小智 0
我假设您想要发送一个 JSON 作为对调用请求的响应。您可以使用 Spring 框架,它使用 Jackson 转换器自动将 Map 对象转换为 JSON。您只需要使用注释 @ResponseBody 作为返回类型。您可以阅读有关 Spring 3 文档的更多信息。
| 归档时间: |
|
| 查看次数: |
36137 次 |
| 最近记录: |