具有编号数据的Android/Java解析JSON



我一直在寻找Java/android中的解析JSON数据。不幸的是,没有我的json。我有包括怪异数字的JSON数据,看起来像:

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

请帮助我如何在Java/Android中解析此内容。谢谢

尝试此

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);
        }

让我知道它是否有效

用于在Android中解析JSON,我发现GSON库有用

http://mvnrepository.com/artifact/com.google.code.gson/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,您可以使用

//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);

最新更新