全方位解析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("https://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("https://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);
  }

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

(0)

相关推荐

  • 获取JsonObject某一未知key的值操作

    我就废话不多说了,大家还是直接看代码吧~ //returnContent为获取到的返回参数 System.out.println(returnContent); //参数转换成json格式 JSONObject jsonObject = JSON.parseObject(returnContent); //获取json里面的值key(可以省略) String ErrMsg = jsonObject.getString("ErrMsg"); String passwords = json

  • Python查找不限层级Json数据中某个key或者value的路径方式

    最近项目中有一个小需求,查找json文件中某个key或者value的路径,所以就写了一个简单的小脚本,比较粗糙. #!/usr/bin/env python3 # -*- coding:utf-8 -*- ''' @author: funcups ''' from logzero import logger import ast class HandleJson(): def __init__(self, data): if data == None: logger.error('请输入json

  • java中获取json的所有key方法

    工作笔记(在不知道json的key时如何获取当前json的keys) String json="{'name':'angui','age':'23','like':'吃水果'}"; JSONObject j = JSON.parseObject(json); j.remove("age"); System.out.println(json.toString()); System.out.println(j.toJSONString()); //将json转换为key

  • 浅谈JsonObject中的key-value数据解析排序问题

    1.JsonObject中的数据是key-value形式,通过JsonObject的keys方法得到key的迭代器是无序的,要想实现排序,目前只能通过加装一层处理(方法来自Stack Overflow,感谢大神),将key-vlaue放入ThreeMap排序,排序规则默认是字母表顺序,可自定义Comparator修改. iteratorKeys = object.keys();//得到所有title SortedMap map = new TreeMap(); while (iteratorKe

  • C# 获取动态key的json对象的值案例

    问题描述 如果直接获取某个json数组中的元素将得到如下的json { "44": { "height": 25, "appeared": -70000000, "length": 44, "order": "saurischia", "vanished": -70000000, "weight": 135000 } } 这个json对象如果使用C

  • 全方位解析key值不确定的json数据

    遇到一个奇葩的需求,一段json的key值是动态的,并且这个key还是有作用的.这就要求在不知道key是多少的情况下去把这段json解析出来. 我用到的方法是迭代器. 具体代码如下 JSONObject jsonObject = new JSONObject(jsonData); //通过迭代器获取这段json当中所有的key值 Iterator keys = jsonObject.keys(); //然后通过一个循环取出所有的key值 while (keys.hasNext()){ Strin

  • Android解析相同接口返回不同格式json数据的方法

    背景原因 目前由双牛掌柜为主导框架开发的一系列产品中,网络请求框架请求到的数据是默认解析成Model类的.即项目中不会手动去解析网络请求到的json数据.在项目中,使用封装好的框架自动解析成Model类.而且Model类使用JsonFormat工具生成,所以在项目的开发中,不会或者说是减少了由于手误而打错了字段问题. 项目对网络处理的繁琐过程进行了高度封装.但是封装的框架是基于后台数据格式不会改变的情况,一旦后天返回的数据产生了变化,网络解析就会发生错误. 问题产生位置 所有设计到微信和支付宝两

  • jQuery Ajax异步处理Json数据详解

    先我们来看一个官方的实例使用 AJAX 请求来获得 JSON 数据,并输出结果: 复制代码 代码如下: $("button").click(function(){  $.getJSON("demo_ajax_json.js",function(result){    $.each(result, function(i, field){      $("div").append(field + " ");    });  });

  • JS根据key值获取URL中的参数值及把URL的参数转换成json对象

    不废话了,直接贴代码了,通过示例一讲解JS根据key值获取URL中的参数值及把URL的参数转换成json对象,示例二讲解js获取url传递参数,具体内容请看下文 示例一: //把url的参数部分转化成json对象 parseQueryString: function (url) { var reg_url = /^[^\?]+\?([\w\W]+)$/, reg_para = /([^&=]+)=([\w\W]*?)(&|$|#)/g, arr_url = reg_url.exec(url

  • python 提取tuple类型值中json格式的key值方法

    标题比较麻烦,都有些叙述不清:昨天下午在调试接口框架的时候,遇到了一个问题是这样的: 使用python 写了一个函数,return 了两个返回值比如 return a,b 于是返回的a,b 是tuple类型,比如值是actual.那么,得到a,b分别是actual[0] ,actual[1]这样的.而目前,actual[0]的值是这样的: {"code":"m0001","result":True} ,但是我想得到code的key值 m0001

  • android针对json数据解析方法实例分析

    本文实例讲述了android针对json数据解析方法.分享给大家供大家参考.具体如下: JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. – Json.org JSON Vs XML 1.JSON和XML的数据可读性基本相同 2.JSON和XML同样拥有丰富的解析手段 3.

  • JS解析json数据并将json字符串转化为数组的实现方法

    复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <SCRIPT LANGUAGE="JavaScript"> var t="{'firstName': 'cyra', 'lastName': 'ric

  • 使用Java进行Json数据的解析(对象数组的相互嵌套)

    这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下! 假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相关工具美化后的结果 { "translation": [ "爱" ], "basic": { "us-phonetic": "lʌv", "phonetic": "lʌv"

  • 深入分析jquery解析json数据

    我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. JSON数据如下,是一个嵌套JSON: 复制代码 代码如下: {"comments":[{"content":"很不错嘛","id":1,"nickname":"纳尼"},{"content":"哟西哟西","id":2

  • java中fastjson生成和解析json数据(序列化和反序列化数据)

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>) 2.通过一个android程序测试fastjson的用法. fastjson简介: Fastjson是一个Java语言编写的高性能功能完善的JSON库.fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jack

随机推荐