看起来将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);
}
看起来将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);
}
gson
。它比 org.json
有更友好的 API。
集合示例(来自用户指南):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
你说得对!即使@Sean Patrick Floyd's的答案也有太多样板代码来将JSON数组转换为string[]或任何其他类型的数组类。相反,以下是我发现优雅的方法:
JsonArray jsonArray = input.getAsJsonArray("key");
Gson gson = new Gson();
String[] output = gson.fromJson(jsonArray , String[].class)
{key:["Apple","Orange","Mango","Papaya","Guava"]}
注意2:上述使用的JsonObject
类来自于com.google.gson
库,而不是来自于org.json
库的JSONObject
类。
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;
};