将JSON数据转换为关联数组

时间:2013-08-22 10:55:51

标签: java android json getjson

我有一个使用Google帐户进行身份验证的应用。作为对我的请求的回复,Google发送以下JSON

{ "id": "ID", "name": "NAME", "given_name": "GiVEN NAME", "family_name": "FAMILY_NAME", "link": "https://plus.google.com/ID", "picture": "https://PHOTO.jpg", "gender": "GENDER", "locale": "LOCALE" }

问题是很多谷歌帐户都没有填写所有这些细节。所以在大多数情况下,JSON看起来像

{“id”:“ID”,  “locale”:“LOCALE” }

因此,为了获取我需要的数据,我需要检查每个JSON以查看是否提供了名称,图片,性别等,如果没有,则提示用户输入这些数据项。为此我尝试过检查JSONObject.getString(“name”)等是否 null 。但是,不是完成if条件,而是跳转到JSON异常。

所以我需要的是一种添加JSON数据的方法,Google将我发送到带有键和值的关联数组,并检查该数组以查看我需要的数据是否存在而没有得到JSON异常。你知道吗?这样做的任何方式?

抱歉我的英语不好。

6 个答案:

答案 0 :(得分:3)

您可以使用JSONObject.optString(String)

if ( "".equals( jsonObject.optString("name") ) ) {
    // name is not present
}

根据Javadoc:

  

public String optString(String name)

     

返回按名称映射的值(如果存在),如果是则强制转换它   必要。如果不存在这样的映射,则返回空字符串。

答案 1 :(得分:0)

  

在堆叠流程中查看答案:   JSON to multidimentional array in android/java

     

希望这会对你有所帮助

答案 2 :(得分:0)

您可以使用以下方式检查:

if(JSONObject.has("name"))
{

}
else
{

}

答案 3 :(得分:0)

检查JSON是否具有特定的字段用途

jsonObject.has("NAME")

如果返回 true ,只需通过jsonObject.getString(“NAME”)添加此字段 当它返回 false 提示添加此字段时。

也许使用Gson库?它使用反射将JSON强制转换为java类。您无需检查JSON是否包含特定字段。

答案 4 :(得分:0)

它可能很长但你可以把它们中的每一个" JSONObject.getString(" name")"在不同的try catch中,您可以在catch中定义默认值或null。

答案 5 :(得分:0)

我使用GSON进行JSON解析,它非常容易实现,并且可以非常有效地解析长而复杂的响应。