【问题标题】:Android/java Parsing JSON with numbered data [duplicate]Android / java解析带有编号数据的JSON [重复]
【发布时间】:2015-05-15 13:12:33
【问题描述】:

我一直在寻找在 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 中解析它。谢谢

【问题讨论】:

  • 这是合法的json...先创建jsonobject,然后从jsonobject中获取数组,就可以得到了
  • 又一个 JSON 问题...可能没有与我相同的 JSON,但如果你没有从类似的 JSON 示例中得到它,那么类似的 JSON 数不胜数,你应该完全放弃编程

标签: java android json jsonobject


【解决方案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);

        }

让我知道它是否有效

【讨论】:

  • 嗨 apk,它的作品!太感谢了。真的很感激。
【解决方案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,您可以使用

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

【讨论】:

    猜你喜欢
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    相关资源
    最近更新 更多