我有一个使用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异常。你知道吗?这样做的任何方式?
抱歉我的英语不好。
答案 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解析,它非常容易实现,并且可以非常有效地解析长而复杂的响应。