如何在Android中将json对象转换为字符串

时间:2014-04-07 07:25:06

标签: android json

我的JSON格式是:

[
    {
        "change": 1.59,
        "name": "ABC",
        "price": 10.52,
        "volume": 230
    },
    {
        "change": -0.05,
        "name": "DEF",
        "price": 1.06,
        "volume": 1040
    },
    {
        "change": 0.01,
        "name": "GHI",
        "price": 37.17,
        "volume": 542
    }
]

我想解析它并将其转换为字符串。我正在使用这种方法进行转换:

JSONObject jsonObj = new JSONObject(jsonStr);
for (int i = 0; i < jsonObj.length(); i++)
{                                              
    String change = jsonObj.getString(TAG_CHANGE);
    String name = jsonObj.getString(TAG_NAME);
    String price = jsonObj.getString(TAG_PRICE);
    String volume = jsonObj.getString(TAG_VOLUME);
    HashMap<String, String> contact = new HashMap<String, String>();

    // adding each child node to HashMap key => value
    contact.put(TAG_CHANGE, change);
    contact.put(TAG_NAME, name);
    contact.put(TAG_PRICE, price);
    contact.put(TAG_VOLUME, volume);

    // adding contact to contact list
    contactList.add(contact);
}

但是我收到了一个错误:

  

/System.err(867):at org.json.JSON.typeMismatch(JSON.java:111)

如何解决此问题?

3 个答案:

答案 0 :(得分:1)

请试一试,它应该有效

JSONArray jsonObj = new JSONArray(jsonStr);

for (int i = 0; i < jsonObj.length(); i++) {
    JSONObject c = jsonObj.getJSONObject(i);
    String change = c.getString(TAG_CHANGE);
    String name = c.getString(TAG_NAME);
    String price = c.getString(TAG_PRICE);
    String volume = c.getString(TAG_VOLUME);
    HashMap < String, String > contact = new HashMap < String, String > ();
    contact.put(TAG_CHANGE, change);
    contact.put(TAG_NAME, name);
    contact.put(TAG_PRICE, price);
    contact.put(TAG_VOLUME, volume);
    contactList.add(contact);
}

答案 1 :(得分:0)

试试这个..

您收到的回复为JSONArray,但您的回复是JSONObject

[                // this is JSONArray
      {          // this is JSONObject

更改此

JSONObject jsonObj = new JSONObject(jsonStr);

JSONArray jsonObj = new JSONArray(jsonStr);

答案 2 :(得分:0)

你正在以错误的方式解析。你的json以包含JsonObjects的数组开头。这可以被识别,因为方括号表示JsonArray而花括号表示JsonObject。从:

开始
JSONArray jsonArr = new JSONArray(jsonStr);

然后遍历每个对象,在每个索引处获取JsonObject并使用getString方法为每个键获取值。