it-roy-ru.com

Преобразовать строку в JsonArray

как правильно конвертировать эту строку в jsonArray?

{
    "myArray": [
    {   "id": 1,
        "att1": 14.2,
        "att2": false },
    {   "id": 2,
        "att1": 13.2,
        "att2": false },
    {   "id": 3,
        "att1": 13,
        "att2": false }
  ]}

JSONArray jArray = new JSONArray(STRING_FROM_ABOVE); приводит к jArray.length = 1 Это мой первый раз, чтобы связаться с json :)

7
DieselPower

Попробуй это :

JSONObject jObject = new JSONObject(STRING_FROM_ABOVE);
JSONArray jArray = jObject.getJSONArray("myArray");

"String_from_above" - ​​это не массив Json, это объект Json, содержащий один атрибут (myArray), который является массивом Json;)

Затем вы можете сделать:

for (int i = 0; i < jArray.length(); i++) {
        JSONObject jObj = jArray.getJSONObject(i);
        System.out.println(i + " id : " + jObj.getInt("id"));
        System.out.println(i + " att1 : " + jObj.getDouble("att1"));
        System.out.println(i + " att2 : " + jObj.getBoolean("att2"));
}
10
Organ

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

JSONObject jo = new JSONObject(STRING_FROM_ABOVE);
JSONArray rootArray= jo.getJSONArray("myArray");
int rootArrayLength=rootArray.length();
for(int i=0;i<rootArrayLength;i++){
   int id=   rootArray.getJSONObject(i).getInt("id");
   // do same for others too and create an object
}
// create object and make a list
2
canova

Просто чтобы добавить сюда другой метод, я бы порекомендовал взглянуть на Gson . Gson - это библиотека, которая упрощает сериализацию и десериализацию объектов Java. Например, с вашей строкой вы можете сделать это:

// Declare these somewhere that is on the classpath
public class ArrayItem{
    public int id;
    public double att1;
    public boolean att2;
}

public class Container{
    public List<ArrayItem> myArray;
}

// In your code
Gson gson = new Gson();

Container container = gson.fromJson(json, Container.class);

for(ArrayItem item : container.myArray){
    System.out.println(item.id);  // 1, 2, 3
    System.out.println(item.att1);  // 14.2, 13.2, 13.0
    System.out.println(item.att2);  // false, false, false
}

Точно так же вы можете очень легко вернуться назад.

String jsonString = gson.toJson(container);
// jsonString no contains something like this:
// {"myArray":[{"id":1,"att1":14.2,"att2":false},{"id":2,"att1":13.2,"att2":false},{"id":3,"att1":13.0,"att2":false}]}

Основное преимущество, которое дает что-то вроде Gson, заключается в том, что теперь вы можете использовать все проверки типов Java по умолчанию вместо того, чтобы самостоятельно управлять именами и типами атрибутов. Это также позволяет вам делать некоторые модные вещи, такие как репликация иерархий типов, что делает управление большим количеством сообщений json несложным. Он прекрасно работает с Android, а сам jar крошечный и не требует никаких дополнительных зависимостей.

1
TwentyMiles

Посмотрите на JQuery и, в частности, функцию Parse. Это позволит разобрать массив Json в объект напрямую.

0
PizzaTheHut