【问题标题】:Cannot parse json in android无法在android中解析json
【发布时间】:2016-07-08 05:21:58
【问题描述】:

我有从我的网络服务接收 json 的 json。 会是这个样子,

{"JSONDataResult":"[{\"id\":3,\"e_code\":123533,\"type\":\"ab\",\"description\":\"sick-leave\",\"remarks\":\"test\",\"req_date\":\"2016-07-01T12:22:34\",\"date\":\"01\/07\/2016\",\"response\":null,\"aproved_date_time\":null,\"status\":\"not seen\"}]"}

当从 json http://www.jsoneditoronline.org/ 验证它时,它说它只有一个 object 。我什至不能从它这样说的客户端 android 应用程序将其转换为 json 数组

 org.json.JSONException: Value [{"id":3,"e_code":123533,"type":"ab","description":"sick-leave","remarks":"test","req_date":"2016-07-01T12:22:34","date":"01/07/2016","response":null,"aproved_date_time":null,"status":"not seen"}] at JSONDataResult of type java.lang.String cannot be converted to JSONArray

我正在使用 AsyncHttpClient (loopj) 来解析 json

client.get("http://192.168.1.6/JSONService/RESTService.svc/json/dddd",new JsonHttpResponseHandler(){
        @Override
        public void onSuccess(int statusCode, Header[] headers, JSONObject response) {


                try {

                    String str=response.toString();

                    JSONObject jobj=new JSONObject(str);
                    jsonArray=jobj.getJSONArray("JSONDataResult");

                    ...

【问题讨论】:

  • 对不起,这是this的重复问题
  • 为什么要再次将json转换为字符串?为什么不直接解析呢??
  • 我在那里找到了答案...
  • JSONis 是一个具有单个元素的对象,其值为 string,它本身就是 JSON。所以你必须解析它两次。如果您对制作人有任何控制权,我建议您更改它。

标签: android json loopj


【解决方案1】:

您可以通过以下方式解析它:

假设您在以下变量中得到响应为 strData

 strData = strData.replaceAll("\\","");

  JSONObject jsonObject = new JSONObject(strData);
  JSONArray jsonArray = jsonObject.getJSONArray("JSONDataResult");

【讨论】:

  • 这只会破坏 JSON。坏主意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-04
  • 2019-11-11
  • 2013-08-11
相关资源
最近更新 更多