jsonelement上的错误无法转换为jsonobject

fjaof16o  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(532)

所以有一个jsonreqobj,

jsonReqObj = {
 "postData" : {
     "name":"abc",
     "age": 3,
     "details": {
        "eyeColor":"green",
        "height": "172cm",
        "weight": "124lb",
   }
 }
}

还有一个save函数将返回一个字符串。我想使用save函数,但是save json的输入参数应该是postdata中的json。

public String save(JsonObject jsonReqObj) throw IOException {
...
 return message
}

下面是我的代码

JsonObject jsonReqPostData = jsonReqObj.get("postData")

String finalMes = save(jsonReqPostData);

但我得到一个错误

com.google.gson.JsonElement cannot be convert to com.google.gson.JsonObject.
jrcvhitl

jrcvhitl1#

JsonObject.get 返回一个 JsonElement -它可能是一个字符串,或布尔值等。
唯一的选择是 get ,但投给 JsonObject :

JsonObject jsonReqPostData = (JsonObject) jsonReqObj.get("postData");

如果结果是 postData 是一根绳子等。那可能没问题。它会回来的 null 如果 jsonReqObj 不包含 postData 属性-在这种情况下,强制转换将成功,并保留变量 jsonReqPostData 具有空值。
另一个可能更清楚的选择是 getAsJsonObject 取而代之的是:

JsonObject jsonReqPostData = jsonReqObj.getAsJsonObject("postData");
ppcbkaq5

ppcbkaq52#

我已经用验证了你的json文件https://jsonlint.com/ 看起来格式不正确,而不是:

jsonReqObj = {
    "postData": {
        "name": "abc",
        "age": 3,
        "details": {
            "eyeColor": "green",
            "height": "172cm",
            "weight": "124lb",
        }
    }
}

应该是:

{
    "postData": {
        "name": "abc",
        "age": 3,
        "details": {
            "eyeColor": "green",
            "height": "172cm",
            "weight": "124lb"
        }
    }
}

也许这就是为什么你不能转换成一个物体
注:我会把这作为一个评论,而不是作为一个答案,但我没有足够的声誉t\t

相关问题