【发布时间】:2014-05-28 12:20:24
【问题描述】:
我正在尝试将 NameValuePairdata 放入 JSONObject。 NameValuePairdata 的名称为字符串,值为 JSONArray。现在,当我尝试将此 NameValuePairdata 放入 JSONObject 时,jsonobject 会将 JSONArray 值转换为字符串。
详情请查看以下代码:
构造NameValuePair:
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "1"));
JSONArray arr = new JSONArray();
if(arrBean != null && arrBean.size() > 0) {
for (Bean bean : arrBean) {
JSONObject idsJsonObject = new JSONObject();
try {
idsJsonObject.put("min", bean.getMin());
idsJsonObject.put("m1", bean.getMin());
idsJsonObject.put("sec", bean.getSec());
} catch (JSONException e) {
e.printStackTrace();
}
arr.put(idsJsonObject);
}
}
nameValuePairs.add(new BasicNameValuePair("records", arr.toString()));
构造要发送到 HttpPost 的 JSONObject:
JSONObject JSONObjectData = new JSONObject();
for (NameValuePair nameValuePair : nameValuePairs) {
try {
JSONObjectData.put(nameValuePair.getName(), nameValuePair.getValue());
} catch (JSONException e) {
}
}
如上图JSONObjectData结果如下:
{"id":"1","records":"[{\"min\":\"610\",\"m1\":\"10\",\"sec\":\"\"},{\"min\":\"610\",\"m1\":\"10\",\"sec\":\"\"},{\"min\":\"610\",\"m1\":\"10\",\"sec\":\"\"},{\"min\":\"610\",\"m1\":\"10\",\"sec\":\"\"},{\"min\":\"610\",\"m1\":\"10\",\"sec\":\"\"},{\"min\":\"610\",\"m1\":\"10\",\"sec\":\"\"},{\"min\":\"610\",\"m1\":\"10\",\"sec\":\"\"},{\"min\":\"610\",\"m1\":\"10\",\"sec\":\"\"},{\"min\":\"610\",\"m1\":\"10\",\"sec\":\"\"},{\"min\":\"610\",\"m1\":\"10\",\"sec\":\"\"}]"}
您可以看到,它会自动将 \"value\" 附加到数组值中。前任。 \"min\",\"m1\" 等...
任何人都知道如何避免附加这些 \"value\"。
请告诉我。提前致谢。
【问题讨论】:
-
您是否尝试找出 nameValuePair.getName() 和 nameValuePair.getValue() 返回的内容?请分享此信息。尝试记录这些值。
-
nameValuePair.getName() 和 nameValuePair.getValue() 返回我最初构造的正确字符串。在 JSONObject.put() 时,值发生了变化。