如何构建JSON请求体?

时间:2012-06-01 07:57:31

标签: android json request

我正在尝试构建以下JSON请求正文。

这是我第一次使用JSON,我正在关注this示例,但仍在努力。

我一直在关注GSON但​​是想先管理纯JSON,也许对于这么小的东西来说,添加GSON库是不值得的?

你能帮我解决一下代码吗?

感谢。

{
   locations:
   [
      {
         latLng:
         {
            lat: 40.900799,
            lng: 8.606102
         }
      },
      {
         latLng:
         {
            lat: 42.900799,
            lng: 9.606102
         }
      }
   ]
}

编辑:

Here是我尝试使用的Web服务,here是请求样本。

3 个答案:

答案 0 :(得分:3)

使用json对象。 做那样的事。 不要手写json,你很容易犯错。

public JSON() throws JSONException
{
    JSONArray locArr=new JSONArray();
    locArr.put(createLatLng(40.900799, 8.606102));
    locArr.put(createLatLng(42.900799, 9.606102));
    JSONObject main=new JSONObject();
    main.put("locations", locArr);
    Log.d("JSON",main.toString());      
}


public JSONObject createLatLng(double lat, double lng) throws JSONException
{
    JSONObject latLng=new JSONObject();
    latLng.put("lat",lat);
    latLng.put("lon",lng);
    JSONObject latLngWrap=new JSONObject();
    latLngWrap.put("latLng",latLng);
    return latLngWrap;
}

答案 1 :(得分:1)

JSON表示法需要“”字段名称。只有值是字符串才能包装值。

{
 "locations":
   [
      {
         "latLng":
         {
            "lat": 40.900799,
            "lng": 8.606102
         }
      },
      {
         "latLng":
         {
            "lat": 42.900799,
            "lng": 9.606102
         }
      }
   ]
}

如果JSON使用正确,您可以随时验证 http://jsonlint.com/

答案 2 :(得分:0)

扩展maciekczwa的答案。 JSON(与可以说是XML不同)并不是真正用人眼看待的。很快就会很难看到一个对象的开始和结束位置以及包装内容的内容。使用他的示例创建主JSON对象,然后用您需要的任何对象填充它。完成所有操作后,您可以非常轻松地将其转换为字符串进行传输,而无需查看,并且这样做意味着无需担心需要将哪些标签包装在什么类型的引号等中。

eskalera 100%正确。 JSON要求所有字段都用引号括起来(关于它们是否可以是单引号或*必须是双引号的规则因实现而异,但同样,这只有在您手动构建JSON时才有意义,如你应该只在非常简单的情况下(甚至那时......可能没有)。