0

In below JSON, there are two arrays. I want them to be parsed in such a way that I can iterate over them one by one and store the result.

Please find below the content of JSON file.

{
  "id": 1,
  "firstname": "Katerina",
  "languages": [
    {
      "lang": "en",
      "knowledge": "proficient"
    },
    {
      "lang": "fr",
      "knowledge": "advanced"
    }
  ],
  "job": {
    "site": "www.javacodegeeks.com",
    "name": "Java Code Geeks"
  }
}

{
  "id": 2,
  "firstname": "Kati",
  "languages": [
    {
      "lang": "fr",
      "knowledge": "average"
    },
    {
      "lang": "hn",
      "knowledge": "advanced"
    }
  ],
  "job": {
    "site": "www.example.com",
    "name": "Php Code Geeks"
  }
}
Bruce_Wayne
  • 1,564
  • 3
  • 18
  • 41

2 Answers2

0

Your JSON is not valid looks like first block is copied to create next block. Anyway you are using Java then you can use JSONProvider(part of jaxrs library) and use it to convert java object to json or json to java object. You can also use Gson libabry from Google, add the jar in your library or use maven dependency if you are using maven as

<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>

here is an example of Gson http://www.javacreed.com/simple-gson-example/

sunny
  • 303
  • 2
  • 7
0

I create this example so you can generate:

a valid json file using Gson lib.

read this file and converted it to Object Array java

I hope that's help you

Job Class :

public class Job {

    private String site;
    private String name;

    public Job() {

    }


    public String getSite() {
        return site;
    }
    public void setSite(String site) {
        this.site = site;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }


    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("Job [site=");
        builder.append(site);
        builder.append(", name=");
        builder.append(name);
        builder.append("]");
        return builder.toString();
    }



}

Class Language :

public class Language {

    private String lang;
    private String knowledge;



    public Language() {

    }
    public String getLang() {
        return lang;
    }
    public void setLang(String lang) {
        this.lang = lang;
    }
    public String getKnowledge() {
        return knowledge;
    }
    public void setKnowledge(String knowledge) {
        this.knowledge = knowledge;
    }
    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("Language [lang=");
        builder.append(lang);
        builder.append(", knowledge=");
        builder.append(knowledge);
        builder.append("]");
        return builder.toString();
    }

}

Personne class :

    import java.util.List;


public class Personne {

    private int id;
    private String firstname;
    private List<Language> languages;
    private Job job;

    public Personne() {

    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getFirstname() {
        return firstname;
    }
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }
    public List<Language> getLanguages() {
        return languages;
    }
    public void setLanguages(List<Language> languages) {
        this.languages = languages;
    }
    public Job getJob() {
        return job;
    }
    public void setJob(Job job) {
        this.job = job;
    }

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("Personne [id=");
        builder.append(id);
        builder.append(", firstname=");
        builder.append(firstname);
        builder.append(", languages=");
        builder.append(languages);
        builder.append(", job=");
        builder.append(job);
        builder.append("]");
        return builder.toString();
    }



}

Main Class:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;


public class JsonGenerate {

    public static void main(String[] args) throws IOException {

        List<Personne> personnes = new ArrayList<Personne>();

        List<Language> languages = new ArrayList<Language>();

        Job job  = new Job();

        Language lang = new Language();

        Personne per = new Personne();

        lang.setLang("en");
        lang.setKnowledge("proficient");
        languages.add(lang);

        lang = new Language();
        lang.setLang("fr");
        lang.setKnowledge("advanced");
        languages.add(lang);

        job.setName("Java Code Geeks");
        job.setSite("www.javacodegeeks.com");

        per.setFirstname("Katerina");
        per.setId(1);
        per.setJob(job);
        per.setLanguages(languages);

        personnes.add(per);

        languages = new ArrayList<Language>();
        per = new Personne();

        lang = new Language();
        lang.setLang("fr");
        lang.setKnowledge("average");
        languages.add(lang);
        lang = new Language();
        lang.setLang("hn");
        lang.setKnowledge("advanced");
        languages.add(lang);

        job.setName("Php Code Geeks");
        job.setSite("www.example.com");

        per.setFirstname("Kati");
        per.setId(2);
        per.setJob(job);
        per.setLanguages(languages);

        personnes.add(per);

        //System.out.println(personnes.toString());

         Writer writer = new FileWriter("Output.json");

         Gson gson = new GsonBuilder().create();

         gson.toJson(personnes, writer);

         writer.close();

         BufferedReader bufferedReader = new BufferedReader(new FileReader("Output.json"));
         Type collectionType = new TypeToken<List<Personne>>() {}.getType();
        //convert the json string back to object
        List<Personne> obj = gson.fromJson(bufferedReader, collectionType);
        System.out.println(obj);

    }

}
JHDev
  • 974
  • 2
  • 26
  • 38