java - 如何使用 map 中的键/值制作 JSON 字符串

标签 java json map

我正在尝试使用相应的键/值对创建一个 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 字符串 map 。所以在迭代 al.getValue() 之后,JSON 字符串应该看起来像这样 map -

{
 "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 字符串,我是寻找。谁能帮我解决这个问题,比如最干净的方法是什么?

谢谢

最佳答案

不确定您正在执行的具体任务是什么,但是有许多 Java JSON 库可以为您完成此任务,例如 json in javagoogle-gson .比如java中的json,一旦你把它的JSONObject里面的值都填完了,然后将其转换为 JSON 字符串相当容易:

JSONObject.toString();  // compact JSON string
JSONObject.toString(int indent);  // easier readable format with indention.

例如,在您的情况下,您可以创建如下所示的 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));

这是它的输出:

{"myMap": {
  "hello": "world",
  "here is": "an example"
}}

关于java - 如何使用 map 中的键/值制作 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17098763/

相关文章:

java - 模板解析时发生错误(模板: "class path resource [templates/addWunsch.html]")

python - Flask.test_client().post 和 JSON 编码

java - Android RecyclerView 滚动性能

java - 在方法引用的返回值上调用方法

java - 什么会导致 Android 布局的特定区域停止响应按钮点击?

javascript - 我应该如何处理针对我的对象模型的格式不正确的 JSON 响应错误? [ES6]

javascript - 使用 Javascript 构建动态 JSON 结构

data-structures - 用于有效返回哈希表(映射、字典)的前 K 个条目的数据结构

c++ - STL 映射到自身?

class - Dart 扩展 Map 以方便延迟加载