জ্যাকসন ব্যবহার করে কীভাবে কোনও অ্যারে JSON স্ট্রিং পার্স করবেন


98

Stringনিম্নলিখিত মান সহ আমার একটি রয়েছে:

[
  {
    "key1": "value11",
    "key2": "value12"
  },
  {
    "key1": "value21",
    "key2": "value22"
  }
]

এবং নিম্নলিখিত শ্রেণি:

public class SomeClass {
    private String key1;
    private String key2;
    /* ... getters and setters omitted ...*/
}

এবং আমি এটি একটি List<SomeClass>বা একটিতে পার্স করতে চাইSomeClass[]

জ্যাকসন ব্যবহার করে এটি করার সহজ উপায় কোনটি ObjectMapper?


4
আমারও একই অবস্থা ছিল, তবে JSONArray অবজেক্টটিকে ক্লাসে না করে ডি-সিরিয়ালাইজ করার সিদ্ধান্ত নিয়েছে, কারণ এটি ভবিষ্যতে শ্রেণিকরণ সিরিয়ালকরণের সমস্যাগুলি এড়াতে পারে। দেখার কোন সুবিধা আছে?
অরুণ

উত্তর:


177

আমি অবশেষে এটি পেয়েছি:

ObjectMapper objectMapper = new ObjectMapper();
TypeFactory typeFactory = objectMapper.getTypeFactory();
List<SomeClass> someClassList = objectMapper.readValue(jsonString, typeFactory.constructCollectionType(List.class, SomeClass.class));

4
অবজেক্টম্যাপার কী? আপনি দয়া করে নির্দিষ্ট করতে পারেন?
হিটেশ 141

4
@ হিটেশ 141 অবজেক্টম্যাপার com.fasterxml.jackson.databind.ObjectMapper
চু

89

অন্য উত্তরটি সঠিক, তবে সম্পূর্ণতার জন্য, এখানে অন্যান্য উপায় রয়েছে:

List<SomeClass> list = mapper.readValue(jsonString, new TypeReference<List<SomeClass>>() { });
SomeClass[] array = mapper.readValue(jsonString, SomeClass[].class);

4

একটি অ্যারের সাথে সম্পূর্ণ উদাহরণ। " কনস্ট্রাক্টআলারটাইপ () " " কনস্ট্রাক্টক্লিকেশনটাইপ () " বা আপনার অন্য যে কোনও প্রকারের দ্বারা প্রতিস্থাপন করুন ।

import java.io.IOException;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.type.TypeFactory;

public class Sorting {

    private String property;

    private String direction;

    public Sorting() {

    }

    public Sorting(String property, String direction) {
        this.property = property;
        this.direction = direction;
    }

    public String getProperty() {
        return property;
    }

    public void setProperty(String property) {
        this.property = property;
    }

    public String getDirection() {
        return direction;
    }

    public void setDirection(String direction) {
        this.direction = direction;
    }

    public static void main(String[] args) throws JsonParseException, IOException {
        final String json = "[{\"property\":\"title1\", \"direction\":\"ASC\"}, {\"property\":\"title2\", \"direction\":\"DESC\"}]";
        ObjectMapper mapper = new ObjectMapper();
        Sorting[] sortings = mapper.readValue(json, TypeFactory.defaultInstance().constructArrayType(Sorting.class));
        System.out.println(sortings);
    }
}

0

আমি JSONLint.com এ জসন যাচাই করে এবং তারপরে জ্যাকসন ব্যবহার করে এই সমস্যার সমাধান করেছি। নীচে একই জন্য কোড দেওয়া হয়।

 Main Class:-

String jsonStr = "[{\r\n" + "       \"name\": \"John\",\r\n" + "        \"city\": \"Berlin\",\r\n"
                + "         \"cars\": [\r\n" + "            \"FIAT\",\r\n" + "          \"Toyata\"\r\n"
                + "     ],\r\n" + "     \"job\": \"Teacher\"\r\n" + "   },\r\n" + " {\r\n"
                + "     \"name\": \"Mark\",\r\n" + "        \"city\": \"Oslo\",\r\n" + "        \"cars\": [\r\n"
                + "         \"VW\",\r\n" + "            \"Toyata\"\r\n" + "     ],\r\n"
                + "     \"job\": \"Doctor\"\r\n" + "    }\r\n" + "]";

        ObjectMapper mapper = new ObjectMapper();

        MyPojo jsonObj[] = mapper.readValue(jsonStr, MyPojo[].class);

        for (MyPojo itr : jsonObj) {

            System.out.println("Val of getName is: " + itr.getName());
            System.out.println("Val of getCity is: " + itr.getCity());
            System.out.println("Val of getJob is: " + itr.getJob());
            System.out.println("Val of getCars is: " + itr.getCars() + "\n");

        }

POJO:

public class MyPojo {

private List<String> cars = new ArrayList<String>();

private String name;

private String job;

private String city;

public List<String> getCars() {
    return cars;
}

public void setCars(List<String> cars) {
    this.cars = cars;
}

public String getName() {
    return name;
}

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

public String getJob() {
    return job;
}

public void setJob(String job) {
    this.job = job;
}

public String getCity() {
    return city;
}

public void setCity(String city) {
    this.city = city;
} }

  RESULT:-
         Val of getName is: John
         Val of getCity is: Berlin
         Val of getJob is: Teacher
         Val of getCars is: [FIAT, Toyata]

          Val of getName is: Mark
          Val of getCity is: Oslo
          Val of getJob is: Doctor
          Val of getCars is: [VW, Toyata]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.