我的JSON响应是否正确?为什么我试图检索它时看到这个异常?

时间:2014-04-17 06:24:44

标签: android json web-services

我的问题是我有一个asp。 Web服务..当我调用它时,它给了我以下结果:

[
  {
    "_OrderDetails": [
      {
        "ProductName": "FUCHS SUPER GT SAE 10W30 6X5 / FP10100010102",
        "TotalAfterDiscount_Lc": "7500",
        "MeasureUnitName": "كرتونة",
        "TotalPrice_Lc": "7500",
        "PricePerUnit_Lc": "75",
        "Quantity": "100"
      }
    ],
    "Id": "274",
    "OrderDate": "4/10/2014 12:00:00 AM",
    "Number": "16",
    "CustomerName": "الأسد",
    "Note": ""
  }
]

在主要活动中,我执行以下操作:

 Gson gson = new Gson();
            Log.e("Response", responseJSON);

            if (responseJSON != null) {
                try {
                    JSONObject jsonObj = new JSONObject(responseJSON);

                     //JSONArray jsonarr =new JSONArray();
                    // details=jsonObj.getJSONObject(0);
                    // Getting JSON Array node
                    details = jsonObj.getJSONArray(TAG_CONTACTS);

                    // looping through All Contacts
                    for (int i = 0; i < details.length(); i++) {
                        JSONObject c = details.getJSONObject(i);

                        String product = c.getString(TAG_PRODUCT);
                        Log.e("prodeuct",product+"");
                    }

我正确地看到了logcat中的响应,但是当我尝试从数组中获取任何对象时,我看到一个JSON异常,它说:

JSON数组无法转换为JSON对象!!!

请有人帮助我吗?

3 个答案:

答案 0 :(得分:1)

Chang to JSONArray

if (responseJSON != null) {
try {
JSONArray array = new JSONArray(responseJSON)

}

答案 1 :(得分:1)

因为你的json返回jsonarray并且你试图访问jsonobject。

更改您的代码:

if (responseJSON != null) {
                try {
                    JSONArray jsonObj = new JSONArray(responseJSON);

                          // looping through All Contacts
                    for (int i = 0; i < jsonObj.length(); i++) {
                        // your code
                    }

答案 2 :(得分:1)

http://jsonviewer.stack.hu/用它来查看你的json并相应地解决它。你正在使用json数组作为json对象。

使用这些:

JSONObject jsonObj = new JSONObject(responseJSON); 

JSONArray jr = new JSONArray(responseJSON);