JSONArray到字符串数组

时间:2011-01-24 06:52:53

标签: java json

将json数组转换为string []看起来太多了boilterplate。有没有更简单优雅的方式?

final JSONArray keyArray = input.getJSONArray("key");
String[] keyAttributes = new String[keyArray.length()];
for(int i = 0; i < keyArray.length(); i++) {
    keyAttributes[i] = keyArray.getString(i);
}

4 个答案:

答案 0 :(得分:6)

使用gson。它有一个比org.json更友好的API。

Collections Examples(来自User Guide):

Gson gson = new Gson();
Collection<Integer> ints = Lists.immutableList(1,2,3,4,5);

//(Serialization)
String json = gson.toJson(ints); ==> json is [1,2,3,4,5]

//(Deserialization)
Type collectionType = new TypeToken<Collection<Integer>>(){}.getType();
Collection<Integer> ints2 = gson.fromJson(json, collectionType);
//ints2 is same as ints

答案 1 :(得分:1)

public String[] jsonArrayToStringArray(JSONArray jsonArray) {
    int arraySize = jsonArray.size();
    String[] stringArray = new String[arraySize];

    for(int i=0; i<arraySize; i++) {
        stringArray[i] = (String) jsonArray.get(i);
    }

    return stringArray;
};

答案 2 :(得分:0)

没有任何内置方法可以做到这一点,我认为这是最简单的方法

以下similar topic可以帮助您

答案 3 :(得分:0)

你是对的!甚至@Sean Patrick Floyd's答案太多了,无法将JSON数组转换为string []或任何其他类型的数组类。相反,我发现这是优雅的:

JsonArray jsonArray = input.getAsJsonArray("key");

Gson gson = new Gson();
String[] output = gson.fromJson(jsonArray , String[].class)

注意1 JsonArray必须是字符串数组,对于上面的示例,没有任何属性名称。例如:

{key:["Apple","Orange","Mango","Papaya","Guava"]}

注意2:上面使用的 JsonObject类来自com.google.gson库,而不是来自JSONObject库的org.json类。