**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答复。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
3天前关闭。
Improve this question
我有一个未格式化的JSON字符串,我想使用Java格式化。我已经添加了org.json
依赖项,并编写了以下代码:
String json = "[{...}, {...}]"; // Placeholder for my actual large JSON array string
JsonArray jsonArray = new JSONArray(json);
json = jsonArray.toString(4);
格式化后,JSON变得比它应该的小得多(最初约10 MB,格式化后约3 MB)。
为什么?很明显,很多数据都缺失了。
我也尝试了Gson
,但失败了
Caused by: com.google.gson.JsonIOException: Failed making field 'java.io.Reader#lock' accessible; either increase its visibility or write a custom TypeAdapter for its declaring type.
at com.google.gson.internal.reflect.ReflectionHelper.makeAccessible(ReflectionHelper.java:38)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:286)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:130)
at com.google.gson.Gson.getAdapter(Gson.java:556)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:160)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:294)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:130)
at com.google.gson.Gson.getAdapter(Gson.java:556)
at com.google.gson.Gson.toJson(Gson.java:834)
at com.google.gson.Gson.toJson(Gson.java:812)
at com.google.gson.Gson.toJson(Gson.java:759)
at com.google.gson.Gson.toJson(Gson.java:736)
因为我用的是Java 19。
使用代码:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonReader jsonReader = new JsonReader(new StringReader(json));
jsonReader.setLenient(true); // Enable lenient mode to handle malformed JSON
json = gson.toJson(jsonReader);
最后,我尝试了Jackson
:
ObjectMapper mapper = new ObjectMapper();
json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(mapper.readTree(json));
与org.json
相同的问题,输出的JSON大约是原始的1/3。
1条答案
按热度按时间wsewodh21#
我的错误最终是我以错误的方式将不同的JSON连接成一个大的JSON。
"[{...}, {...}]" + "[{...}, {...}]" ...
当然,这并没有正确工作,JSON解析在第一个数组之后停止。在修复了我的连接逻辑之后,即使是10MB的JSON也可以正确地解析和格式化。Jackson
库。