0

我想将 Json 字符串转换为数组这是我当前的代码

    String[] comments = json2.getString(KEY_COMMENT);

KEY_COMMENT 是一个包含多个评论的字符串。评论被收集在一个 php 数组中,然后以 Json 字符串的形式发送回手机。如何将字符串转换为数组?

评论的一个例子是这样的

07-08 20:33:08.227: E/JSON(22615): {
"tag":"collectComments",
"success":1,
"error":0,
"numberOfComments":16,
"offsetNumber":1,
"comment":["test 16",
"test 15",
"test 14",
"test 13",
"test 12",
"test 11",
"test 10",
"test 9",
"test 8",
"test 7",
"test 6",
"test 5",
"test 4",
"test 3",
"test 2",
"test 1"]}n
4

3 回答 3

1

看起来您正在使用org.json 库,并且您已经调用了public JSONObject(java.lang.String source)基于字符串的构造函数来将完整字符串解析为名为 的本地 var json2,大概是这样的:

String json = ... // "{\"tag\":\"collectComments\",\"success\":1,...
JSONObject json2 = new JSONObject(json);
String KEY_COMMENT = "comment";

但不是String[] comments = json2.getString(KEY_COMMENT);(它试图将注释作为字符串获取;由于它是一个数组,因此可能不应该工作,但确实如此)你可能真正想要:

JSONArray commentArray = json2.getJSONArray(KEY_COMMENT);

此时,commentArray是一个JSONArray,它可以是一个异构的值列表,包括字符串、数字、布尔值、空值,甚至数组。如果你想把它变成一个实际的 Java 字符串数组,你需要遍历它,边走边转换:

String comments[] = new String[commentArray.length()];
for ( int i=0; i<commentArray.length(); i++ ) {
    comments[i] = commentArray.getString(i);
}
于 2013-07-09T00:57:58.160 回答
0

我发现 GSON 是在 Android 上处理 json 对象的好工具。这是一个将 JSON 转换为 Java 对象的 Java 库。

您可以在这里查看:https ://sites.google.com/site/gson/gson-user-guide#TOC-Array-Examples

这是他们使用数组的示例:

Gson gson = new Gson();
int[] ints = {1, 2, 3, 4, 5};
String[] strings = {"abc", "def", "ghi"};

// Serialization
gson.toJson(ints);     ==> prints [1,2,3,4,5]
gson.toJson(strings);  ==> prints ["abc", "def", "ghi"]

// Deserialization
int[] ints2 = gson.fromJson("[1,2,3,4,5]", int[].class); 

在您的情况下,您将按如下方式设置课程:

public class Comment {
    public String tag;
    public String[] comments; 
    // define other elements (numberOffset, error...) if needed
}

然后,在您的代码中反序列化 json 响应:

Comment item = gson.fromJson(jsonString, Comment.class); 
// Access the comments by 
String[] comments = item.comments;

// Access the tag
String tag = item.tag;  
于 2013-07-09T00:50:33.520 回答
0

要使用默认 JSON 库,请尝试以下操作:

// 从 json 字符串转换为可用的 JSONArray commentsArray = json2.JsonArray(KEY_COMMENT);

// 循环遍历元素 int length = commentsArray.length() for (int index = 0; index < length; index++) { String comment = commentsArray.getString(index); System.out.println(comment); }

有关更多信息,我推荐本教程http://www.vogella.com/articles/AndroidJSON/

于 2013-07-09T00:59:47.090 回答