2015-09-08 6 views
1

Я работаю над приложением, в котором я должен генерировать JSON как это:Как создать JSon с Java

[ 
    {"title":"Culture","start":"Salary","end":"Work"}, 
    {"title":"Work","start":"Salary","end":"Work"} 
] 

Но мой код генерирует JSON как это:

{{"name":"Culture"},[{"name":"Salary"},{"name":"Work"}],} 

Мой код:

public class ParseJson { 



public static class EntryListContainer { 

    public List<Entry> children = new ArrayList<Entry>(); 
    public Entry name; 

} 

public static class Entry { 

    private String name; 

    public Entry(String name) { 
     this.name = name; 
    } 

} 



public static void main(String[] args) { 
    EntryListContainer elc1 = new EntryListContainer(); 
    elc1.name = new Entry("Culture"); 
    elc1.children.add(new Entry("Salary")); 
    elc1.children.add(new Entry("Work")); 




    ArrayList<EntryListContainer> al = new ArrayList<EntryListContainer>(); 
    Gson g = new Gson(); 

    al.add(elc1); 


    StringBuilder sb = new StringBuilder("{"); 
    for (EntryListContainer elc : al) { 

     sb.append(g.toJson(elc.name)); 
     sb.append(","); 
     sb.append(g.toJson(elc.children)); 
     sb.append(","); 
    } 

    String partialJson = sb.toString(); 

    if (al.size() > 1) { 
     int c = partialJson.lastIndexOf(","); 
     partialJson = partialJson.substring(0, c); 
    } 

    String finalJson = partialJson + "}"; 
    System.out.println(finalJson); 

    } 

} 

Может ли кто-нибудь помочь мне сгенерировать этот json в моем требуемом формате? пожалуйста, заранее спасибо

+2

Создайте класс, который представляет ваши данные, а затем используйте Gson для создания класса –

+0

. Можете ли вы изменить мой код? Я попытался сделать один? – lucifer

+0

Добро пожаловать в переполнение стека! Я добавил форматирование в требуемую схему json. Также я переписал пару строк, чтобы исправить грамматику и сделать ваш вопрос кратким. Удачи –

ответ

5

Попробуйте

public class Entry { 
    public String title; 
    public String start; 
    public String end; 
} 

А в другой части кода

private ArrayList<Entry> entries = new ArrayList<>(); 

// Fill the entries... 

String the_json = new Gson().toJson(entries); 
1

1) Во-первых Создать свой POJO

public class MyJSONObject { 

    private String title; 
    private String start; 
    private String end; 

    //getter and setter methods 

    [...] 

    @Override 
    public String toString() { 

    } 

} 

2) Используйте com.google .code.gson

public static void main(String[] args) { 

{ 
    ArrayList<MyJSONObject> myJSONArray = new ArrayList<>(); 

    MyJSONObject obj = new MyJSONObject(); 
    obj.setTitle="Culture"; 
    obj.set[...] 

    myJSONArray.add(obj); 

    Gson gson = new Gson(); 

    // convert java object to JSON format, 
    // and returned as JSON formatted string 
    String json = gson.toJson(myJSONArray); 

    System.out.println(json); 
} 

Выход: [{ "Название": "Культура", "старт": "Зарплата", "конец": "Работа"}, ...]

0

Я рекомендую вам использовать некоторые JSON Java API, такие как Gson. Очень просто создать строку json из объекта POJO или создать объект POJO из строки json.

код для генерации строки JSON из объекта POJO, как это:

Gson gson = new Gson(); 
String stringJson = gson.toJson(somePojoObject); 

Код для создания объекта POJO из строки JSON как это:

Gson gson = new Gson(); 
SomePojoClass object = gson.fromJson(stringJson, SomePojoClass.class); 

Заметим, что вы не можете сериализовать объекты с круглыми ссылками. Это приводит к бесконечной рекурсии.

Смежные вопросы