【发布时间】:2013-06-10 12:41:39
【问题描述】:
我正在尝试使用相应的键/值对创建 JSON 字符串。在下面的代码中,我尝试迭代AttributeValue 的列表,然后尝试使用al.getValue map 制作JSON 字符串。
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;
}
当我检查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}
也就是说,我可以迭代 al.getValue() 映射并使用这些 key/value pair 来制作 JSON 字符串。
现在我正在尝试通过迭代 al.getValue() 映射来创建 JSON 字符串。因此,在迭代 al.getValue() 映射后,JSON 字符串应该看起来像这样-
{
"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"
}
}
],
}
我想知道最干净的方法是什么?在我上面的代码中,我不能完全制作上面的 JSON 字符串,但无论我上面有什么代码,它都能够以我需要的方式制作 JSON 字符串的一小部分,但不是完整的 JSON 字符串,我是寻找。任何人都可以帮我解决这个问题,比如最干净的方法是什么?
谢谢
【问题讨论】:
-
为什么不使用像 GSON 这样的序列化库来为您完成这一切?
-
您知道可以从 Map 创建 JSONObject,对吧?见this
-
我可以使用各种 JSON 库,但它们不会像我在实际
JSONString中看到的那样给我lv和v。意思是,我需要在我的实际JSONString中附加这些lv and v -
我不明白为什么你不能使用图书馆。你让这种方式变得复杂。