【问题标题】:JSONArray to string arrayJSONArray 到字符串数组
【发布时间】:2011-06-14 08:16:24
【问题描述】:

将 json 数组转换为 string[] 的样板似乎太多了。有没有更简单优雅的方式?

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);
}

【问题讨论】:

  • 假设 org.json.JSONArray。不,这是最好的。

标签: java json


【解决方案1】:

使用gson。它的 API 比 org.json 友好得多。

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

【讨论】:

  • 谢谢。 int[] ints2 = gson.fromJson("[1,2,3,4,5]", int[].class);我一直在寻找这样的东西。
【解决方案2】:

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

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

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

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

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

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

【讨论】:

    【解决方案3】:
    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;
    };
    

    【讨论】:

      【解决方案4】:

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

      这里是similar topic,可以帮助您

      【讨论】:

      • 即使使用“知名”库也对我有用。
      猜你喜欢
      • 1970-01-01
      • 2016-06-07
      • 2013-03-30
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      相关资源
      最近更新 更多