JSON str 的值有时是字符串,有时是对象,我如何使用 gson 来解析它

问题描述 投票:0回答:5

我的json str有时是这样的:

{
    "data": {
        "changebaby": "no change",
        "changemama": {
            "mamacontext": "mama is a good mama",
            "mamaico": "",
            "mamatitle": "mama"
        }
    }
}

有时是这样的:

{
    "data": {
        "changebaby": "no change",
        "changemama": "no change"
    }
}

如你所见,“changebaby”键和“changemama”键的值有时是一个字符串,有时是一个对象,我应该如何通过gson解析它?

不要使用android api来解析json字符串,需要使用google的gson lib来解析json字符串。

android json gson
5个回答
1
投票
if(jsonObject.optJSONObject("changemama") != null)
{
     JSONObject changemama=jsonObject.optJSONObject("changemama");
     //Its JSON object, do appropriate operation
}
else if(jsonObject.optString("changemama") != null)
{
     //Its string, do appropriate operation
}

如果您有更多的可能性,例如布尔值或整数或长整型,请参考this

optJSONObject

返回按名称映射的值(如果存在并且是 JSONObject),或者 否则为 null。

或者按照 lawrance 给出的方式进行: 确定 JSON 是 JSONObject 还是 JSONArray


1
投票

试试这个:

JSONObject changemama=jsonObject.optJSONObject("changemama");
    if(changemama== null){
         String str=jsonObject.optString("changemama");
}

0
投票

试试这个代码。

JSONObject data;
try {
    data = jsonObj.getJSONObject("changemama");

    // do stuff

} catch (JSONException e) {
    data = jsonObj.getString("changemama");

    // do stuff
}

0
投票

试试这个:

if(obj.has("changemama")){
   if(obj.optString("changemama").length() > 0){}
   else if(obj.optJSONObject("changemama").length() > 0){}}

0
投票

为了简化android开发,我们可以要求后端开发者更改Mobile API。新的API可以返回不能更改值的json字符串。所有键的值有时不能是字符串,有时是对象。

© www.soinside.com 2019 - 2024. All rights reserved.