Java 如何在JsonArray(com.google.gson)中将空字符串转换为null
我的JSON对象有一些空值(“”),因此在转换时会抛出错误 这是我的JSONJava 如何在JsonArray(com.google.gson)中将空字符串转换为null,java,json,gson,jsonparser,Java,Json,Gson,Jsonparser,我的JSON对象有一些空值(“”),因此在转换时会抛出错误 这是我的JSON { "Animals": [ { "id": 6140, "Name": "" }, { "id": 6144, "Name": "Lion" } ] } 我的代码: JsonParser parser=new JsonParser(); Js
{
"Animals": [
{
"id": 6140,
"Name": ""
},
{
"id": 6144,
"Name": "Lion"
}
]
}
我的代码:
JsonParser parser=new JsonParser();
JsonArray myarray=parser.parse(json).getAsJsonArray();
我得到的错误如下
com.google.gson.stream.malformedjsonexception
在将JSON对象解析为JSONArray时,如何将空字符串值转换为null
我希望最后的结果是
[{id=6140, Name=null},{id=6144, Name="Lion"}]
这是因为您提供的json不是json数组,而是json对象。你应该这样做
JsonParser json = new JsonParser();
JsonObject myJsonObject = json.parse(json).getAsJsonObject();
JsonArray jsonArray = myJsonObject.getAsJsonArray("Animals");
这仍然不能将空字符串转换为nullIMO空字符串。空字符串应该是一个单独的用例,它与gson无关。他的问题是无法转换为json数组,前提是空字符串导致了这个问题。@maneesh我认为cricket_007是对的。这不能解决我的问题@JayendranRosh一旦你解析了json,你可以检查任何字段是否为空,或者你可以编写自定义序列化程序,请看一下@maneesh你能用我的用例解释一下吗?举个例子,你想要哪一个?要正确转换JSON,或者将空字符串解析为null?请记住,空字符串是完全可以接受的JSON。如果您需要它为null,为什么它的开头是空字符串?@cricket_007:我的用例只是想在我的后端存储JSON数组。因此,当我尝试使用JSONArray时,转换由于空字符串(“”)而出错。空字符串在我的例子中不起作用。你能解释一下空字符串(“”)是如何被JSON接受的吗?JSON(可能还有你的后端)很乐意接受null和零长度的字符串。。。您的错误显然是因为您试图将对象解析为数组。与stringYes无关当我接受Json作为字符串时,我可以将Json作为纯字符串对象推送(包括“”和空)。但是结果值将类似[{id=6140.0,value=},{id=6144.0,value=Lion}]。ID6140IIS的值很难处理。我不知道您使用的是什么数据库系统,但处理空字符串应该不难。当JSON中接受空值时,几乎没有理由将其设为null,但null作为值也是如此