有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Android/java解析带有编号数据的JSON

我一直在寻找用java/安卓解析JSON数据的方法。不幸的是,没有与我相同的JSON。我有包含奇怪数字的JSON数据,看起来像:

{
"formules": [{"1":
    {
  "formule": "Linear Motion",
  "url": "qp1"
},"2":
{
  "formule": "Constant Acceleration Motion",
  "url": "qp2"
},"3":
{
  "formule": "Projectile Motion",
  "url": "qp3"
}
}
]
}

请帮助我如何在Java/安卓中解析这个。谢谢


共 (2) 个答案

  1. # 1 楼答案

    试试这个

    JSONObject jsonObject = new JSONObject(string);
    JSONArray jsonArray = jsonObject.getJSONArray("formules");
    JSONObject jsonObject1 = jsonArray.getJSONObject(0);
    

    现在您可以按以下方式访问对象“1”

    JSONObject json = jsonObject1.getJSONObject("1");
    

    或者使用迭代器进行如下迭代

    Iterator keys = jsonObject1.keys();
    while(keys.hasNext()) {
                // loop to get the dynamic key
                String currentDynamicKey = (String)keys.next();
                JSONObject json = jsonObject1.getJSONObject(currentDynamicKey);
    
            }
    

    让我知道它是否有效

  2. # 2 楼答案

    对于在Android中解析Json,我发现Gson库非常有用

    http://mvnrepository.com/artifact/com.google.code.gson/gson/2.3

    它需要创建一个表示对象的pojo类。可能看起来像

    public class ClassPojo
    {
    private Formules[] formules;
    
    public Formules[] getFormules ()
    {
        return formules;
    }
    
    public void setFormules (Formules[] formules)
    {
        this.formules = formules;
    }
    
    @Override
    public String toString()
    {
        return "ClassPojo [formules = "+formules+"]";
    }
    }
    public class Formules
    {
    private Formule 3;
    
    private Forumle 2;
    
    private Formule 1;
    
    
    
    }
    
    public class Formule
    {
    private String formule;
    
    private String url;
    
    public String getFormule ()
    {
        return formule;
    }
    
    public void setFormule (String formule)
    {
        this.formule = formule;
    }
    
    public String getUrl ()
    {
        return url;
    }
    
    public void setUrl (String url)
    {
        this.url = url;
    }
    
    @Override
    public String toString()
    {
        return "ClassPojo [formule = "+formule+", url = "+url+"]";
    }
    }       
    

    然后,要将其转换为JSon和JSon,可以使用

    //Convert to JSON
    ClassPojo pojo = new ClassPojo();
    Gson gson = new Gson();
    String json = gson.toJson(pojo);
    
    //COnvert back to Java object
    ClassPojo pojo = gson.fromJson(json,ClassPojo.class);