Java 如何在JsonArray(com.google.gson)中将空字符串转换为null

Java 如何在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

我的JSON对象有一些空值(“”),因此在转换时会抛出错误

这是我的JSON

{
    "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作为值也是如此