zoukankan      html  css  js  c++  java
  • 解析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");
    	}
    

      

  • 相关阅读:
    dedecms自定义表单提交获取时间跟ip地址
    JQuery购物车多物品数量的加减+总价计算
    jquery手机触屏滑动拼音字母城市选择器代码
    js实现图片上传实时显示
    js实现发送验证码倒计时效果
    JS 仿支付宝input文本输入框放大组件
    js实现倒计时效果
    jquery统计输入文字的个数并对其进行判断
    【Linux】Linux系统安全设置
    java泛型(generics)
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/10487255.html
Copyright © 2011-2022 走看看