У меня есть строка, которая состоит из нескольких элементов json, которые в свою очередь состоят из нескольких элементов. Как преобразовать его в объект json

-4

Итак, у меня есть строка, которая выглядит

 [  
{
"status":"Pending",
"name":"test",
"fileHash":"test",
"createdOn":"tset",
"bytesCompleted":0,
"size":40,
"fileId":"test"
},
{
"status":"Pending",
"name":"test",
"fileHash":"test",
"createdOn":"test",
"bytesCompleted":0,
"size":40,
"fileId":"tset"
}
]

Я пробовал много вариантов, таких как gson и org.json, но я не могу преобразовать эту строку в объект JSON. Как я могу это сделать?

Обновление: я использую Java. Я стараюсь

JSONObject jsonRes = new JSONObject(res.toString());
JSONObject jsnobject = new JSONObject(res);

JSONArray jsonArr = new JSONArray(res);
JSONParser parser = new JSONParser();

JSONObject json = (JSONObject) parser.parse(res);

В основном я получаю ошибки, как

[ERROR]   org.json.simple.JSONArray cannot be cast to org.json.JSONObject

Кроме того, если я это сделаю

 JSONObject jsnobject = new JSONObject(res);
return jsnobject;

Где res точно так же, как строка, которую я дал в начале, я получаю ошибку, как

A JSONObject text must begin with '{' at 1 [character 2 line 1]

спросил(а) 2020-04-04T00:43:36+03:00 3 месяца назад
1
Решение
55

import java.lang.reflect.Type;
import com.google.gson.reflect.TypeToken;

public static void main(String[] args) {
String json = " [ " +
" { " +
" \"status\":\"Pending\"," +
" \"name\":\"test\"," +
" \"fileHash\":\"test\"," +
" \"createdOn\":\"tset\"," +
" \"bytesCompleted\":0," +
" \"size\":40," +
" \"fileId\":\"test\"" +
" }," +
" { " +
" \"status\":\"Pending\"," +
" \"name\":\"test\"," +
" \"fileHash\":\"test\"," +
" \"createdOn\":\"test\"," +
" \"bytesCompleted\":0," +
" \"size\":40," +
" \"fileId\":\"tset\"" +
" }" +
"]";

Gson gson = new Gson();
Type listType = new TypeToken<ArrayList<Test>>(){}.getType();
List<Test> list = gson.fromJson(json, listType);
System.out.println(list.get(0).getStatus());
}

public class Test {

private String status;

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

}

ответил(а) 2020-04-04T01:00:01.977996+03:00 3 месяца назад
55

Вы можете использовать Джексона для этого.

Создать пример:

public class Example {

@JsonProperty("status")
private String status;
@JsonProperty("name")
private String name;
@JsonProperty("fileHash")
private String fileHash;
@JsonProperty("createdOn")
private String createdOn;
@JsonProperty("bytesCompleted")
private Integer bytesCompleted;
@JsonProperty("size")
private Integer size;
@JsonProperty("fileId")
private String fileId;

// getters and setters
}

Разберитесь со списком примеров:

public List<Example> parse(String str) throws JsonParseException, JsonMappingException, IOException {
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(str, new TypeReference<List<Example>>() {});
}

ответил(а) 2020-04-04T00:43:36+03:00 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема