1.) 创建一个适当类型的数组列表,在本例中为String
2.) 创建一个JSONObject,同时将您的字符串作为输入传递给JSONObject 构造函数
-
JSONObject 表示法由大括号表示,即 {}
-
JSONArray 表示法由方括号表示,即 []
3.) 使用"interests" 作为索引从JSONObject(在第二步创建)检索JSONArray。
4.) 使用循环遍历JASONArray,直到length() 函数提供的数组长度
5.) 使用 getJSONObject(index) 函数从 JSONArray 检索您的 JSONObjects
6.) 使用索引“interestKey”从JSONObject 获取数据。
注意:如果 json 响应(通常来自其他 JSON 响应 API)包含引号 ("),JSON 解析使用特殊嵌套字符的转义序列像这样
`"{"key":"value"}"`
应该是这样的
`"{\"key\":\"value\"}"`
所以你可以使用JSONParser 来实现安全的转义序列格式
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(inputString);
代码:
JSONParser parser = new JSONParser();
String response = "{interests : [{interestKey:Dogs}, {interestKey:Cats}]}";
JSONObject jsonObj = (JSONObject) parser.parse(response);
或
JSONObject jsonObj = new JSONObject("{interests : [{interestKey:Dogs}, {interestKey:Cats}]}");
List<String> interestList = new ArrayList<String>();
JSONArray jsonArray = jsonObj.getJSONArray("interests");
for(int i = 0 ; i < jsonArray.length() ; i++){
interestList.add(jsonArray.getJSONObject(i).optString("interestKey"));
}
注意:有时您可能会在values are not available in appropriate type or is there is no mapping key 时看到一些例外情况,所以在这些情况下,当您不确定是否存在价值时,请使用optString、optInt、optBoolean等等,如果它不存在,它将简单地返回默认值,如果它是字符串类型,甚至尝试将值转换为 int,反之亦然,所以只要 根本没有 null 或 NumberFormat 异常缺少键或值
From docs
获取与键关联的可选字符串。它返回
如果没有这样的键,则为 defaultValue。
public String optString(String key, String defaultValue) {
String missingKeyValue = json_data.optString("status","N/A");
// note there is no such key as "status" in response
// will return "N/A" if no key found
或者要获取空字符串,即"",如果没有找到密钥,则只需使用
String missingKeyValue = json_data.optString("status");
// will return "" if no key found where "" is an empty string
进一步参考研究