最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

全方位解析key值不確定的json數(shù)據(jù)

 更新時(shí)間:2021年01月25日 15:17:24   作者:人艱不拆_zmc  
這篇文章主要介紹了全方位解析key值不確定的json數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

遇到一個(gè)奇葩的需求,一段json的key值是動(dòng)態(tài)的,并且這個(gè)key還是有作用的。這就要求在不知道key是多少的情況下去把這段json解析出來。

我用到的方法是迭代器。

具體代碼如下

JSONObject jsonObject = new JSONObject(jsonData);
//通過迭代器獲取這段json當(dāng)中所有的key值
Iterator keys = jsonObject.keys();
//然后通過一個(gè)循環(huán)取出所有的key值
while (keys.hasNext()){
String key = String.valueOf(keys.next());
//最后就可以通過剛剛得到的key值去解析后面的json了
}

得到key值以后,就可以用jsonobject來解析對(duì)應(yīng)的值了。

示例:

/**
   * 獲取匯率
   *
   * @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");
  }

補(bǔ)充:如何解析key值不固定的json數(shù)據(jù)

大多數(shù)情況下我們遇到的json數(shù)據(jù)一般都是key值是固定的,方便我們創(chuàng)建對(duì)應(yīng)的實(shí)體類對(duì)象來進(jìn)行解析。但有時(shí)候也會(huì)有些特殊情況,key值和value值一樣都是動(dòng)態(tài)未知的情況。

如下所示:

{
data: { 
   "姓名": "老王",
  "年齡": "41",
  "性別": "男",
  } 
}

那如何解決呢?

直接貼代碼:

JSONObject jsonObject = new JSONObject(jo.toString);//json數(shù)據(jù)
    JSONObject data= jsonObject.getJSONObject("data");          
   // 動(dòng)態(tài)獲取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);
  }

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 深入理解Java對(duì)象復(fù)制

    深入理解Java對(duì)象復(fù)制

    使用任何已有的工具,都沒有直接使用 get set 方式進(jìn)行,對(duì)象轉(zhuǎn)換的速度快,雖然get set 方式代碼對(duì)一些比較麻煩,但是效率要高一些的,推薦使用 MapStruct 方式.,需要的朋友可以參考下
    2021-05-05
  • 使用@Value值注入及配置文件組件掃描

    使用@Value值注入及配置文件組件掃描

    這篇文章主要介紹了使用@Value值注入及配置文件組件掃描方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java使用線程池實(shí)現(xiàn)socket編程的方法詳解

    Java使用線程池實(shí)現(xiàn)socket編程的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Java使用線程池實(shí)現(xiàn)socket編程的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • SpringSecurity 自定義認(rèn)證登錄的項(xiàng)目實(shí)踐

    SpringSecurity 自定義認(rèn)證登錄的項(xiàng)目實(shí)踐

    本文主要介紹了SpringSecurity 自定義認(rèn)證登錄的項(xiàng)目實(shí)踐,以手機(jī)驗(yàn)證碼登錄為例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • GitLab在IDEA中回滾主分支問題

    GitLab在IDEA中回滾主分支問題

    這是工作中遇到的問題,記錄下來,也方便自己后面查看操作步驟,也方便各位遇到這個(gè)問題,不至于卡太久,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Spring 中的 ResourceLoader實(shí)例詳解

    Spring 中的 ResourceLoader實(shí)例詳解

    Spring框架提供了ResourceLoader接口,用于加載資源文件,DefaultResourceLoader是其基本實(shí)現(xiàn),只能加載單個(gè)資源,而ResourcePatternResolver繼承自ResourceLoader,增加了按模式加載多個(gè)資源的能力,感興趣的朋友一起看看吧
    2024-11-11
  • Maven中optional標(biāo)簽用法詳解

    Maven中optional標(biāo)簽用法詳解

    這篇文章主要介紹了Maven中optional標(biāo)簽,文章中有詳細(xì)的代碼示例供大家參考,對(duì)大家的學(xué)習(xí)或工作有一定的參考價(jià)值,感興趣的小伙伴可以借鑒一下
    2023-05-05
  • springboot如何使用@ConfigurationProperties封裝配置文件

    springboot如何使用@ConfigurationProperties封裝配置文件

    springboot如何使用@ConfigurationProperties封裝配置文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java超級(jí)實(shí)用的Freemarker工具類

    Java超級(jí)實(shí)用的Freemarker工具類

    這篇文章主要介紹了Java超級(jí)實(shí)用的Freemarker工具類,文章圍繞相關(guān)資料介紹以及代碼描述非常詳細(xì),需要的小伙伴可以參考一下,希望對(duì)你得學(xué)習(xí)有所幫助
    2022-02-02
  • java項(xiàng)目啟動(dòng)失敗的問題及解決

    java項(xiàng)目啟動(dòng)失敗的問題及解決

    這篇文章主要介紹了java項(xiàng)目啟動(dòng)失敗的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評(píng)論

紫云| 锡林浩特市| 民丰县| 灌南县| 瓦房店市| 亚东县| 平原县| 富蕴县| 隆安县| 平顺县| 怀宁县| 申扎县| 区。| 杭锦旗| 江源县| 塘沽区| 安达市| 北海市| 获嘉县| 全椒县| 富裕县| 松原市| 汉沽区| 延庆县| 大足县| 鲁山县| 横峰县| 广昌县| 内丘县| 乐昌市| 乌拉特后旗| 兴安盟| 贡嘎县| 南召县| 柞水县| 炎陵县| 阆中市| 叶城县| 六安市| 邵阳县| 六盘水市|