Java 如何打印无转义符和引号的嵌套json对象
我有一个名为Java 如何打印无转义符和引号的嵌套json对象,java,json,nested,Java,Json,Nested,我有一个名为jsonObject { "action":"Read", "infos":[ { "value":0.0350661, "key":"first" } ] } 我想用下面的格式将json对象打印到 {"action":"Read","infos":[{"value":0.0350661,"key":"first"}]} 如果我使用jsonObject.toString()方法
jsonObject
{
"action":"Read",
"infos":[
{
"value":0.0350661,
"key":"first"
}
]
}
我想用下面的格式将json对象打印到
{"action":"Read","infos":[{"value":0.0350661,"key":"first"}]}
如果我使用jsonObject.toString()
方法,我将得到
{"action":"Read","infos":"[{\"value\":0.0350661,\"key\":\"first\"}]"}
{"action":"Read","infos":"[{"value":0.0350661,"key":"first"}]"}
如果我使用StringEscapeUtils.unescapeJava(jsonObject.toString())
方法,我将得到
{"action":"Read","infos":"[{\"value\":0.0350661,\"key\":\"first\"}]"}
{"action":"Read","infos":"[{"value":0.0350661,"key":"first"}]"}
如果我将jackson mapper与以下代码一起使用
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
String jsonString = mapper.writeValueAsString(getDebugInfo())
我将获得jsonString
as
{"nameValuePairs":{"action":"Read","infos":[{"value":0.0350661,"key":"first"}]}}
是否有任何解决方案可以获得所需的输出json字符串?- JSON结构
- 代码/Java
- JSON结构
- 代码/Java
这就是为什么在使用字符串时出现双引号的原因 在这里,我使用GSON库尝试了下面的代码,它正在为我打印正确的json,如上图所示
public static void main ( String [] args ) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("action", "Read");
JsonArray jsonArr = new JsonArray();
JsonObject jsonObject2 = new JsonObject();
jsonObject2.addProperty("value", 0.0350661);
jsonObject2.addProperty("key", "first");
jsonArr.add(jsonObject2);
jsonObject.add("infos", jsonArr);
String jsonString = jsonObject.toString();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonElement json = gson.fromJson(jsonString,JsonElement.class);
String jsonInString = gson.toJson(json);
System.out.println(jsonInString);
}
输出:
{
"action": "Read",
"infos": [
{
"value": 0.0350661,
"key": "first"
}
]
}
即使我使用org.json
形成jsonObject,并使用System.out.println(jsonObject.toString())简单地打印它在控制台上,我得到这样的结果
{"action":"Read","infos":[{"value":0.0350661,"key":"first"}]}
因此,在这里,我不确定您是如何形成jsonObject的。在这里,我使用GSON库尝试了下面的代码,它正在为我打印正确的json,如上图所示
public static void main ( String [] args ) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("action", "Read");
JsonArray jsonArr = new JsonArray();
JsonObject jsonObject2 = new JsonObject();
jsonObject2.addProperty("value", 0.0350661);
jsonObject2.addProperty("key", "first");
jsonArr.add(jsonObject2);
jsonObject.add("infos", jsonArr);
String jsonString = jsonObject.toString();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonElement json = gson.fromJson(jsonString,JsonElement.class);
String jsonInString = gson.toJson(json);
System.out.println(jsonInString);
}
输出:
{
"action": "Read",
"infos": [
{
"value": 0.0350661,
"key": "first"
}
]
}
即使我使用org.json
形成jsonObject,并使用System.out.println(jsonObject.toString())简单地打印它在控制台上,我得到这样的结果
{"action":"Read","infos":[{"value":0.0350661,"key":"first"}]}
因此,在这里,不确定您是如何形成jsonObject的。是您愿意使用的唯一库,还是使用gson
或其他库的解决方案也可以接受?@Pshemo其他库也可以接受。我搜索了gson库,但没有找到可行的解决方案,==您说您有“json对象”。你是如何创造它的?如果它来自POJO,那么simpleGson Gson=new Gson();字符串str=gson.toJson(myPOJO)
应该提供您想要的。您愿意使用的唯一库是jackson
,还是使用gson
或其他库的解决方案也可以接受?@Pshemo其他库也可以接受。我搜索了gson库,但没有找到可行的解决方案,==您说您有“json对象”。你是如何创造它的?如果它来自POJO,那么simpleGson Gson=new Gson();字符串str=gson.toJson(myPOJO)代码>应该给你你想要的。我知道,但我想得到json字符串的非指定版本,这意味着一个对象!我非常怀疑,这是可能的。我知道,但我想得到json字符串的非指定版本,这意味着一个对象!我非常怀疑,这是可能的。