将Java中的字符串转换为JSONArray

3

我从服务器获得以下的字符串回复:

{"fid":"1272","uri":"http://someurl/services/file/1272"}

我需要将它转换为一个JSONArray。有什么帮助吗?
顺便说一下,我尝试了这个方法,但它不起作用:
String response=getResponseFromServer();
JSONArray array = new JSONArray(response);

I get the error:

org.json.JSONException: Value {"fid":"1272","uri":"http://someurl/services/file/1272"} of type org.json.JSONObject cannot be converted to JSONArray

1
你尝试过什么吗?你正在使用JSON库吗? - jlordo
4
这是一个 JSON 对象,而不是一个 JSON 数组。 - fge
这是一个Java字符串,还不是JSON对象。他在做Java,不是Javascript。 - marlenunez
2个回答

12

如果您正在谈论使用Java中的JSON库,那么由于您的输入字符串是JSON对象而不是JSON数组,因此您应该首先使用JSONObject进行加载:

String response=getResponseFromServer();
JSONObject jsonObject = new JSONObject(response);

完成后,可以使用toJSONArray()将 JSONObject 转换为 JSONArray,需要提供一个键字符串的数组:

String[] names = JSONObject.getNames(jsonObject);
JSONArray jsonArray = jsonObject.toJSONArray(new JSONArray(names));

好的。谢谢。JSONObject对我来说是新的。 - Inf Min
3
没问题,不用谢。这就是 Stack Overflow 的作用 :) - keelar

5

如果你在StackOverflow上搜索Java String to JSONArray,你会得到这个答案:将JSONArray转换为String再转回来

JSONArray jArray;
String s = jArray.toString(); // basically what you have ;)
JSONArray newJArray = new JSONArray(s);

2
我拥有的字符串不符合 JSONArray 构造函数接受的格式。 - Inf Min
好的,在这种情况下请看@keelar的答案。 - marlenunez
OP还没有JSONArray,而问题中的JSON字符串表示的是一个JSONObject而不是一个JSONArray - Alexey Ivanov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接