-1

需要如下所示以 JSON 格式发布数据并且数组的大小不是 恒定的。这取决于用户。

  {
  "info": [
    {
      "Name": "foo1",
      "Number": 123
    },
    {
      "Name": "foo2",
      "Number": 124
    },
    {
      "Name": "foo2",
      "Number": 125
    }
  ]
}

我尝试通过以下方式创建

JSONObject parent = new JSONObject();
JSONArray jArray = new JSONArray();
JSONObject childObj = new JSONObject();


childObj.put("Name", etName.getText()).toString();
childObj.put("Number", etNumber.getText()).toString();

jArray.put(childObj);

parent.put("info",jArray);

但我无法得到它,我也像示例 6.1那样尝试过这种方式,但是没有像 add for JSONArray 这样的方法。那么如何发布我的数据。请帮我。谢谢。

4

2 回答 2

1

我不确定你的问题到底是什么,但我通常会做这样的事情来创建你正在寻找的 JSON 字符串(下面的示例使用来自http://www.json 的 org.json 参考实现。 org/java/index.html ):

JSONObject parent = new JSONObject();
JSONArray infoArray = new JSONArray();


for(int i = 0; i < SOMEARRAY.length; i++)
{
    JSONObject childObj = new JSONObject();
    childObj.put("Name", etName.getText());
    childObj.put("Number", etNumber.getText());
    infoArray.put(childObj);
}

parent.put("info", infoArray);

String encodedJsonString = parent.toString();
于 2012-06-04T09:15:33.410 回答
0

我不明白你为什么toString()在把东西放进去之后打电话childObj。无论如何,这段代码应该可以工作:

JSONObject parent = new JSONObject();
JSONArray jArray = new JSONArray();
JSONObject childObj = new JSONObject();

try
{
    //create first child
    childObj
        .put("Name", "foo1")
        .put("Number", 123);

    //insert it into the array
    jArray.put(childObj);
    //... repeat for all remaining elements

    //attach the array to the parent
    parent.put("info",jArray);
}
catch (JSONException e)
{
    e.printStackTrace();
}

然后,要将您的 JSON 作为 POST 的字符串,只需调用parent.toString();

于 2012-06-04T09:17:43.520 回答