我将如何使用org.json API读取此json字符串

时间:2019-04-11 06:25:03

标签: java json

所以我有以下json字符串

private void addItemInRecyclerViewAndPlaySound() {

    soundToBePlayed++;

    adapter.addItem(allItems.get(soundToBePlayed));
    recyclerView.scrollToPosition(adapter.getItemCount() - 1);

    Integer soundId = soundList.get(soundToBePlayed);

    MediaPlayer mp = MediaPlayer.create(this, soundId);

    if (mp.isPlaying()) {
        mp.stop();
        mp.release();
        mp = MediaPlayer.create(this, soundId);
        mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                // Call this function again to add next item
                // and play the next sound at the same time
                if(soundToBePlayed < allItems.size() - 1)
                    addItemInRecyclerViewAndPlaySound();
            }
        });
    }

    mp.start();
}

我希望将其读取并传递给类的新实例,但是当我不知道名称时,我看不到如何读取它。

我试图将其读取为无法正常工作的数组,并尝试通过名称读取它,但这对我来说不是一个合适的解决方案。

我需要它,以便每当string关键字更改时它仍然可以获取它,例如,当“ Ice”更改为“ Gas”时,我不必手动告诉它搜索气体,我想要一个简单的解决方案来读取所有内容 值名称+双重值 的组成。

2 个答案:

答案 0 :(得分:3)

根据文档,JSONObject有一些适合您情况的方法,它们是:

  • keys()
  • keySet()
  • names()
  • getNames()

它们都返回JSONObject中字段的所有名称,因此您可以采用“ composition”的JSONObject并使用这些方法之一获取字段的名称,然后使用这些键获取所有值。

答案 1 :(得分:-1)

在org.json的GitHub Page上,README.md中有一个很大的胖列表,其中包含该API的所有可能用法。

其中一个读为:

  

JSONObject.java:JSONObject可以解析String或JSONTokener中的文本以生成类似地图的对象。

完全符合您的需求