如何处理键值不定的JSON数据解析问题?

2026-04-19 18:203阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计619个文字,预计阅读时间需要3分钟。

如何处理键值不定的JSON数据解析问题?

在处理一个包含动态key的JSON时,如果不知道具体有多少个key,可以使用迭代器来解析JSON。以下是一个简化的代码示例,使用迭代器来解析包含动态key的JSON对象:

pythonimport json

假设这是你的JSON字符串json_str='{name: Alice, age: 30, hobbies: [reading, gaming]}'json_data=json.loads(json_str)

使用迭代器遍历JSON对象for key, value in json_data.items(): print(fKey: {key}, Value: {value})

这段代码首先将JSON字符串解析为Python字典,然后使用迭代器`items()`遍历字典中的每个键值对,并打印出来。这种方法不需要事先知道key的数量,适用于动态key的情况。

如何处理键值不定的JSON数据解析问题?

遇到一个奇葩的需求,一段json的key值是动态的,并且这个key还是有作用的。这就要求在不知道key是多少的情况下去把这段json解析出来。

我用到的方法是迭代器。

具体代码如下

JSONObject jsonObject = new JSONObject(jsonData); //通过迭代器获取这段json当中所有的key值 Iterator keys = jsonObject.keys(); //然后通过一个循环取出所有的key值 while (keys.hasNext()){ String key = String.valueOf(keys.next()); //最后就可以通过刚刚得到的key值去解析后面的json了 }

得到key值以后,就可以用jsonobject来解析对应的值了。

示例:

/** * 获取汇率 * * @return * @throws Exception */ @SuppressWarnings("rawtypes") public BigDecimal getRate() throws Exception { String m_rateResult = HttpUtil.sendGet("x.szsing.com/v2/quote/price/m_rate"); JSONObject jsonObject = new JSONObject(m_rateResult); JSONObject data = jsonObject.getJSONObject("data"); Iterator keys = data.keys(); String CNY = "0"; while (keys.hasNext()) { String key = String.valueOf(keys.next()); JSONObject m_rate = data.getJSONObject(key); CNY = m_rate.getString("CNY"); if (CNY.isEmpty() == false) { break; } } return new BigDecimal(CNY); } /** * 获取类别版本 * * @return * @throws Exception */ public String getCategoryVersion() throws Exception { String m_custom = HttpUtil.sendGet("x.szsing.com/v2/quote/price/m_custom"); JSONObject jsonObject = new JSONObject(m_custom); JSONObject data = jsonObject.getJSONObject("data"); JSONObject category = data.getJSONObject("category"); return category.getString("version"); }

补充:如何解析key值不固定的json数据

大多数情况下我们遇到的json数据一般都是key值是固定的,方便我们创建对应的实体类对象来进行解析。但有时候也会有些特殊情况,key值和value值一样都是动态未知的情况。

如下所示:

{ data: { "姓名": "老王", "年龄": "41", "性别": "男", } }

那如何解决呢?

直接贴代码:

JSONObject jsonObject = new JSONObject(jo.toString);//json数据 JSONObject data= jsonObject.getJSONObject("data"); // 动态获取key值 Iterator<String> iterator = data.keys();//使用迭代器 while (iterator.hasNext()) { String key = iterator.next();//获取key String value = data.getString(key);//获取value Log.e("key-value","key="+key+" value="+value); }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持易盾网络。如有错误或未考虑完全的地方,望不吝赐教。

本文共计619个文字,预计阅读时间需要3分钟。

如何处理键值不定的JSON数据解析问题?

在处理一个包含动态key的JSON时,如果不知道具体有多少个key,可以使用迭代器来解析JSON。以下是一个简化的代码示例,使用迭代器来解析包含动态key的JSON对象:

pythonimport json

假设这是你的JSON字符串json_str='{name: Alice, age: 30, hobbies: [reading, gaming]}'json_data=json.loads(json_str)

使用迭代器遍历JSON对象for key, value in json_data.items(): print(fKey: {key}, Value: {value})

这段代码首先将JSON字符串解析为Python字典,然后使用迭代器`items()`遍历字典中的每个键值对,并打印出来。这种方法不需要事先知道key的数量,适用于动态key的情况。

如何处理键值不定的JSON数据解析问题?

遇到一个奇葩的需求,一段json的key值是动态的,并且这个key还是有作用的。这就要求在不知道key是多少的情况下去把这段json解析出来。

我用到的方法是迭代器。

具体代码如下

JSONObject jsonObject = new JSONObject(jsonData); //通过迭代器获取这段json当中所有的key值 Iterator keys = jsonObject.keys(); //然后通过一个循环取出所有的key值 while (keys.hasNext()){ String key = String.valueOf(keys.next()); //最后就可以通过刚刚得到的key值去解析后面的json了 }

得到key值以后,就可以用jsonobject来解析对应的值了。

示例:

/** * 获取汇率 * * @return * @throws Exception */ @SuppressWarnings("rawtypes") public BigDecimal getRate() throws Exception { String m_rateResult = HttpUtil.sendGet("x.szsing.com/v2/quote/price/m_rate"); JSONObject jsonObject = new JSONObject(m_rateResult); JSONObject data = jsonObject.getJSONObject("data"); Iterator keys = data.keys(); String CNY = "0"; while (keys.hasNext()) { String key = String.valueOf(keys.next()); JSONObject m_rate = data.getJSONObject(key); CNY = m_rate.getString("CNY"); if (CNY.isEmpty() == false) { break; } } return new BigDecimal(CNY); } /** * 获取类别版本 * * @return * @throws Exception */ public String getCategoryVersion() throws Exception { String m_custom = HttpUtil.sendGet("x.szsing.com/v2/quote/price/m_custom"); JSONObject jsonObject = new JSONObject(m_custom); JSONObject data = jsonObject.getJSONObject("data"); JSONObject category = data.getJSONObject("category"); return category.getString("version"); }

补充:如何解析key值不固定的json数据

大多数情况下我们遇到的json数据一般都是key值是固定的,方便我们创建对应的实体类对象来进行解析。但有时候也会有些特殊情况,key值和value值一样都是动态未知的情况。

如下所示:

{ data: { "姓名": "老王", "年龄": "41", "性别": "男", } }

那如何解决呢?

直接贴代码:

JSONObject jsonObject = new JSONObject(jo.toString);//json数据 JSONObject data= jsonObject.getJSONObject("data"); // 动态获取key值 Iterator<String> iterator = data.keys();//使用迭代器 while (iterator.hasNext()) { String key = iterator.next();//获取key String value = data.getString(key);//获取value Log.e("key-value","key="+key+" value="+value); }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持易盾网络。如有错误或未考虑完全的地方,望不吝赐教。