如何将JSON的每条记录放在一个单独的行上?

时间:2015-01-28 05:43:09

标签: java json

当我使用JSONArray和JSONObject生成JSON时,将在一行中生成整个JSON。如何将每条记录分开?

它生成如下:

 [{"key1":"value1","key2":"value2"}]

我需要它如下:

 [{
    "key1":"value1",
    "key2":"value2"
    }]

4 个答案:

答案 0 :(得分:2)

您可以使用Pretty Print JSON输出(杰克逊)。

贝娄是一些例子

  1. 转换对象并以JSON格式打印输出。

     User user = new User();
     //...set user data
     ObjectMapper mapper = new ObjectMapper();
     System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(user));
    
  2. 漂亮的打印JSON字符串

     String test = "{\"age\":29,\"messages\":[\"msg 1\",\"msg 2\",\"msg 3\"],\"name\":\"myname\"}";
    
     Object json = mapper.readValue(test, Object.class);    
     System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(json));
    
  3. 参考:http://www.mkyong.com/java/how-to-enable-pretty-print-json-output-jackson/

答案 1 :(得分:2)

您可以使用google-gson库来美化您的JSON字符串。 您可以从here下载该库
示例代码:

Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();
JsonElement je = jp.parse(uglyJSONString);
String prettyJsonString = gson.toJson(je);

OR

你可以使用org.json
示例代码:

JSONTokener tokener = new JSONTokener(uglyJsonString); //tokenize the ugly JSON string
JSONObject finalResult = new JSONObject(tokener); // convert it to JSON object
System.out.println(finalResult.toString(4)); // To string method prints it with specified indentation.

请参阅此帖子的回答: Pretty-Print JSON in Java

答案 2 :(得分:0)

许多现代浏览器(包括IE8)支持的JSON.stringify方法可以输出美化的JSON字符串:

JSON.stringify(jsObj, null, "\t"); // stringify with tabs inserted at each level
JSON.stringify(jsObj, null, 4);    // stringify with 4 spaces at each level

请参阅:https://stackoverflow.com/a/2614874/3164682

你也可以在这里美化你的字符串.. http://codebeautify.org/jsonviewer

答案 3 :(得分:0)

要获取易于阅读的json文件,可以使用以下命令将ObjectMapper配置为缩进:

objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);