Как получить размер списка, который содержит JSONObject? - PullRequest
0 голосов
/ 31 января 2019

У меня есть jsonobject в списке, который имеет тип string, и список содержит два объекта json, но размер дает 4.

JSONObject, которые хранятся в списке:

[{"size":"S", "id":11},  {"size":"8", "id":19}]

List<String> myList = new ArrayList<>(Arrays.asList(cart.split(","))); 

дает выше вывод, но myList.size() дает 4.

Ответы [ 2 ]

0 голосов
/ 31 января 2019
Use Object Mapper library.

    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.core.type.TypeReference;
    import com.fasterxml.jackson.databind.ObjectMapper;

Ваш объект String необходимо преобразовать в Java Class Object, и с помощью этого списка вы можете получить правильный размер списка.

Ваш код находится здесь.

String cart = ...;
ObjectMapper mapper = new ObjectMapper();
List<ClassName> classObjects= null;
try {
    classObjects= mapper.readValue(cart, new TypeReference<List<ClassName>>() {});
} catch (Exception e) {
    throw new IndsolvException(ErrorFactory.INTERNAL_SERVER_ERROR, e.getMessage());
}
0 голосов
/ 31 января 2019

Сначала вам нужно сопоставить объект, затем вы сможете получить правильное количество объектов, например:

package com.ds;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;


public class Main {


    public static void main(String[] args) {

        String cart = "[{\"size\":\"S\", \"id\":11},  {\"size\":\"8\", \"id\":19}]";

        Type type = new TypeToken<ArrayList<CObject>>() {
    }.getType();

        ArrayList<CObject> cObjectList = (new Gson()).fromJson(cart, type);

        System.out.println(cObjectList);

        System.out.println(cObjectList.size());

    }

    public class CObject {

        private String id;
        private String size;

        public String getSize() {
            return size;
        }

        public void setSize(String size) {
            this.size = size;
        }

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        @Override
        public String toString() {
            return "CObject{" +
            "id='" + id + '\'' +
            ", size='" + size + '\'' +
            '}';
        }
    }
}

Вывод приведенного выше кода:

[CObject{id='11', size='S'}, CObject{id='19', size='8'}]
2

Надеюсь, что этопоможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...