[英]How to get String[] array of JSON objects in java from String JSON that is contained an array without modification
我在控制器中得到String jsonObject
。 結構如下:
{ "cats":
[
{
"name": "Smoky",
"age": 12,
"color": "gray"
},
{
"name": "Oscar",
"age": 3,
"color": "black"
},
{
"name": "Max",
"age": 4,
"color": "white"
}
]
}
我需要將其解析為String[] jsonObjects
或List<String> jsonObjects
。
我正在嘗試使用GSON來做到這一點:
public static String[] toArray(String json) {
final String PARSING_ERROR = "Error while parsing json to string array";
try {
JsonObject jsonObject = new Gson().fromJson(json, JsonObject.class);
String tableName = jsonObject.keySet().toArray()[0].toString();
JsonArray jsonArray = jsonObject.getAsJsonArray(tableName);
String[] strings = new String[jsonArray.size()];
for (int i = 0; i < jsonArray.size(); i++) {
String stringJson = jsonArray.get(i).toString();
strings[i] = stringJson;
}
return strings;
} catch (Exception e) {
System.err.println(PARSING_ERROR);
throw new DataException(PARSING_ERROR);
}
}
它可以工作,但是在解析之后,我會收到以下字符串:
{"name":"Smoky","age":12,"color":"gray"}
如何獲取以下格式的字符串:
{
"name": "Smoky",
"age": 12,
"color": "gray"
}
抱歉,這不是 PO問題的正確答案 ,但可能對其他要使用GSON來(漂亮)序列化對象的用戶有所幫助,因此String jsonOutput = gson.toJson(someObject);
您“只是”需要:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonOutput = gson.toJson(jsonObject);
看這里 。
在您的情況下 ,您僅使用GSON從JSON 讀取 (反序列化):
JsonObject jsonObject = new Gson().fromJson(json, JsonObject.class);
對於生成的String[]
及其輸出, 您的程序負責!
...並且如果您不想重新發明輪子,例如采用“漂亮”格式且由於GSON已“加入”,您可以執行以下操作:
public static String[] toArray(String json) {
final String PARSING_ERROR = "Error while parsing json to string array";
// one for toJson() (only)
final Gson gsonPretty = new GsonBuilder().setPrettyPrinting().create();
// one for fromJson (demo only)
final Gson gsonUgly = new Gson();
try {
JsonObject jsonObject = gsonUgly.fromJson(json, JsonObject.class);
String tableName = jsonObject.keySet().toArray()[0].toString();
JsonArray jsonArray = jsonObject.getAsJsonArray(tableName);
String[] strings = new String[jsonArray.size()];
for (int i = 0; i < jsonArray.size(); i++) {
// de-serialize & then pretty serialize each "cat".
String catJson = jsonArray.get(i).toString();
JsonObject catObj = gsonUgly.fromJson(catJson, JsonObject.class);
strings[i] = gsonPretty.toJson(catObj);
}
return strings;
} catch (Exception e) {
System.err.println(PARSING_ERROR);
throw new DataException(PARSING_ERROR);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.