我使用JSON -simple,我需要漂亮地打印JSON数据(使其更易于阅读)。
我还没能在那个库中找到这个功能。 这通常是如何实现的?
我使用JSON -simple,我需要漂亮地打印JSON数据(使其更易于阅读)。
我还没能在那个库中找到这个功能。 这通常是如何实现的?
当前回答
我用的是org。Json内置方法来漂亮地打印数据。
import org.json.JSONObject;
JSONObject json = new JSONObject(jsonString); // Convert text to object
System.out.println(json.toString(4)); // Print it with specified indentation
JSON中每个定义的字段顺序是随机的。具体的顺序取决于解析器的实现。
其他回答
我用的是org。Json内置方法来漂亮地打印数据。
import org.json.JSONObject;
JSONObject json = new JSONObject(jsonString); // Convert text to object
System.out.println(json.toString(4)); // Print it with specified indentation
JSON中每个定义的字段顺序是随机的。具体的顺序取决于解析器的实现。
我的情况是我的项目使用了不支持漂亮打印的遗留(非jsr) JSON解析器。然而,我需要生成漂亮的JSON样本;这是可能的,而不需要添加任何额外的库,只要你使用Java 7及以上:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine scriptEngine = manager.getEngineByName("JavaScript");
scriptEngine.put("jsonString", jsonStringNoWhitespace);
scriptEngine.eval("result = JSON.stringify(JSON.parse(jsonString), null, 2)");
String prettyPrintedJson = (String) scriptEngine.get("result");
谷歌的GSON可以很好地做到这一点:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();
JsonElement je = jp.parse(uglyJsonString);
String prettyJsonString = gson.toJson(je);
或者因为现在推荐使用来自JsonParser的静态解析方法,你也可以使用这个代替:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonElement je = JsonParser.parseString(uglyJsonString);
String prettyJsonString = gson.toJson(je);
下面是导入语句:
import com.google.gson.*;
这是Gradle的依赖项:
implementation 'com.google.code.gson:gson:2.8.7'
在JSONLib中,你可以这样使用:
String jsonTxt = JSONUtils.valueToString(json, 8, 4);
来自Javadoc:
现在这可以通过JSONLib库实现:
http://json-lib.sourceforge.net/apidocs/net/sf/json/JSONObject.html
当(且仅当)你使用重载的toString(int indentationFactor)方法而不是标准的toString()方法。
我已经在以下版本的API上验证了这一点:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>