【问题标题】:Parse oData response in Java在 Java 中解析 oData 响应
【发布时间】:2014-09-29 05:23:13
【问题描述】:

我正在创建一个访问 OData 服务的 Http 请求。我收到了响应,但我不知道如何将响应解析为 String 对象,以便将它们添加到 ArrayList

这是我的代码:

protected List<StatusResponse> doInBackground(Void... params)
    {
        // TODO Auto-generated method stub
        // Execute HTTP Post Request

        mResponseList = new ArrayList<StatusResponse>();
        HttpClient httpclient = new DefaultHttpClient();

        HttpGet httpget =  new HttpGet(myOdataQueryUrl);

        try 
        {

            HttpResponse responsenext = httpclient.execute(httpget);
            HttpEntity entitynext = responsenext.getEntity();
            AddedResult= EntityUtils.toString(entitynext);

             jsonArray = new JSONArray(AddedResult);
            for (int i = 0; i < jsonArray.length(); i++)
            {
                JSONObject menuObject = jsonArray.getJSONObject(i);

                String createdBy =  menuObject.getString("CreatedBy");
                String comment =  menuObject.getString("Comment");
                String location =  menuObject.getString("Location");
                String slot =   menuObject.getString("Slot");
                String reachingAt =   menuObject.getString("StartTime");
                String lunch =  menuObject.getString("Lunch");

                mResponseList.add(new StatusResponse(createdBy, comment, location, slot, reachingAt, lunch));
            }

            }


        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }



                return mResponseList;
    }

我收到了这样的回复:--

{
  "odata.metadata":"mysite/odata/$metadata#OStatus","value":[
    {
      "StatusId":2151,"Location":"Office","Slot":"Running late","StartTime":"2014-09-29T12:30:00","Comment":"-","Lunch":null,"CreatedBy":"","ModifiedBy":null,"Created":"2014-09-29T04:39:10.443","Modified":null
    }
  ]
}

如果我尝试像上面那样解析它,我会收到以下错误:

Value {"value":[{"Created":"2014-09-29T04:39:10.443","Modified":null,"StatusId":2151,"ModifiedBy":null,"Slot":"Running late","CreatedBy":"","Comment":"-","Location":"Office","Lunch":null,"StartTime":"2014-09-29T12:30:00"}],"odata.metadata":"https:\/\/mySite\/odata\/$metadata#OStatus"} of type org.json.JSONObject cannot be converted to JSONArray

【问题讨论】:

  • 看起来像 JSON,所以使用 JSON 解析器。
  • @nablex 请查看我得到的编辑代码和错误

标签: java parsing odata


【解决方案1】:

您正在尝试将普通 JSON 对象转换为 JSON 数组。

您似乎还将该数组声明为字段,而不是您的方法的局部变量。你确定这是你需要的吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多