Из токена START_ARRAY при чтении JSON в сервлете - PullRequest
1 голос
/ 15 октября 2019

Мне нужно создать объект Java из строки JSON, полученной в сервлете. Ниже приведен JSON

[{"name":"name","value":"Shital"},{"name":"email","value":"swankhade@gmail.com"},{"name":"contactno","value":"9920042776"},{"name":"Address","value":"a6 102 Elementa"}]

Я попытался изменить JSON, заменив [на {и] на}, но это дает некоторые другиеошибка. Мой код Джексона, где я получаю исключение:

// 2. initiate jackson mapper
                ObjectMapper mapper = new ObjectMapper();
// 3. Convert received JSON to Article
                Enrole enrole = mapper.readValue(json, Enrole.class);

А класс Enroll - это простой класс бинов с установщиком и получателем

public class Enrole {
    private String name;
    private String email;
    private long contactno;
    private String address;

1 Ответ

0 голосов
/ 15 октября 2019

Это один из способов

try {
            ObjectMapper mapper = new ObjectMapper();
            String json = "[{\"name\":\"name\",\"value\":\"Shital\"},{\"name\":\"email\",\"value\":\"swankhade@gmail.com\"},{\"name\":\"contactno\",\"value\":\"9920042776\"},{\"name\":\"Address\",\"value\":\"a6 102 Elementa\"}]";
            KeyValue[] jsonObjArr = mapper.readValue(json, KeyValue[].class);
            Enrole enrol = new Enrole();
            for (int i = 0; i < jsonObjArr.length; i++) {

                KeyValue keyVal = jsonObjArr[i];
                if ("name".equals(keyVal.getName())) {
                    enrol.setName(keyVal.getValue());
                }
                if ("email".equals(keyVal.getName())) {
                    enrol.setEmail(keyVal.getValue());
                }
                if ("contactno".equals(keyVal.getName())) {
                    enrol.setContactno(Long.parseLong(keyVal.getValue()));
                }
                if ("address".equals(keyVal.getName())) {
                    enrol.setAddress(keyVal.getValue());
                }
            }
            System.out.println(enrol.getName());
            System.out.println(enrol.getContactno());
            System.out.println(enrol.getAddress());
            System.out.println(enrol.getEmail());
        } catch (Exception e) {
            System.out.println("Exception " + e);
        }

Класс с ключом и значением:

class KeyValue {
    private String name;
    private String value;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

Класс модели

class Enrole {
    private String name;
    private String email;
    private long contactno;
    private String address;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public long getContactno() {
        return contactno;
    }

    public void setContactno(long contactno) {
        this.contactno = contactno;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...