带有String数组toString()输出的JSONObjcet具有整数值而不是字符串

时间:2013-10-26 07:23:36

标签: java android json

我正在尝试将List<String>保存为字符串,但转化后会为JSONArray提供Integer个值。

所以输出是这样的:

{"data":"{\"my_array\":[\"[41, 14]\"]}"}

我想要的是什么:

{"data":"{\"my_array\":[\"[\"41\", \"14\"]\"]}"}

第一个输出对于Java环境是可以的,但iOS需要将值设置为“Strings”。

稍微更新:我相信JSONObject.toString()会让人感到困惑。下一个代码:

    List<String> test = Arrays.asList("41", "14");
    JSONObject root = new JSONObject();
    try {
        root.put("my_array", test);
    } catch (JSONException e1) {
    }

结果:{"my_array":"[41, 14]"}

感谢。

1 个答案:

答案 0 :(得分:1)

使用JSONArray

 public void test__aaaa(){
        try {
            List<String> test = Arrays.asList("41", "14");

            JSONArray array = new JSONArray(test);

            JSONObject root  = new JSONObject();
            JSONObject data = new JSONObject();
            root.put("data", data);

            data.put("my_array", array);

            assertEquals(root.toString(), "{\"data\":{\"my_array\":[\"41\",\"14\"]}}");

        } catch (JSONException e1) {
        }
    }

在Android上,如果我们将list作为Object,Json将其转换为String,那么我们得到"[41,14]"