如何将Json字符串转换为数组 - Android

时间:2013-07-09 00:18:22

标签: android json string

我想将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

3 个答案:

答案 0 :(得分:1)

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

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,它可以是一个异构的值列表,包括字符串,数字,布尔值,空值甚至数组。如果你想把它变成一个String的实际Java数组,你需要走它,然后转换:

String comments[] = new String[commentArray.length()];
for ( int i=0; i<commentArray.length(); i++ ) {
    comments[i] = commentArray.getString(i);
}

答案 1 :(得分:0)

我发现GSON是一个很好的工具,可以在Android上使用json对象。它是一个将JSON转换为Java对象的Java库。

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

以下是使用Arrays的示例:

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;  

答案 2 :(得分:0)

要使用默认的JSON lib,请尝试:

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

//遍历元素   int length = commentsArray.length()   for(int index = 0; index&lt; length; index ++)   {     String comment = commentsArray.getString(index);     的System.out.println(评论);   }

有关详情,请参阅本教程http://www.vogella.com/articles/AndroidJSON/