Как создать JSON с помощью JSON Simple в Java

#java #json

#java #json

Вопрос:

У меня есть следующая строка json, которую я хочу преобразовать в java-код, чтобы упростить ее изменение и отправить более новый запрос, но, похоже, я не могу понять, как сгенерировать ее с помощью JSONObject и JSONArray .

 ["guest_login",{"chips":{"1":2000},"epoch":1552509677,"invested":{"1":2000},"login_id":10,"news":["Welcome to Poker.","Register and get started with 2000 play chips."],"username":"Guest10"}]
  

Я получаю следующий вывод

 output = ["guest_login",null,null]
  

Вот что я пробовал до сих пор.

 import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

    JSONObject obj = new JSONObject();
    JSONArray list = new JSONArray();

    list.add("guest_login");
    list.add(new JSONObject().put("chips", new JSONObject().put("1", "2000")));
    list.add(obj.put("epoch", "1552509677"));
    System.out.println("output = "   list.toString());
  

также пробовал

         JSONObject json = new JSONObject();
        json.put("name", "student");

        JSONArray array = new JSONArray();
        JSONObject item = new JSONObject();
        item.put("invested", new JSONObject().put("1", "2000"));
        item.put("login_id", "10");         
        item.put("epoch", "1552509677");
        item.put("chips", new JSONObject().put("1", "2000"));
        item.put("news", new JSONArray().add("Welcome to Poker.").add("Register and get started with 2000 play chips."));
        item.put("username","Guest10");
        json.put("guest_login", new JSONArray().add(item));

        message = json.toString();

        System.out.println("output = "   message);
  

Комментарии:

1. Вы не «конвертируете JSON в Java-код». Вы можете преобразовать JSON в объект Java, но сначала вам нужно определить объект. Непонятно, что вы пытаетесь здесь сделать.

Ответ №1:

Я просто запускаю этот код и работает нормально, просто меняю другую библиотеку:

 import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

...

        JSONObject obj = new JSONObject();
        JSONArray list = new JSONArray();

        list.put("guest_login");
        try {
            list.put(new JSONObject().put("chips", new JSONObject().put("1", "2000")));
            list.put(obj.put("epoch", "1552509677"));
        } catch (JSONException e) {
            e.printStackTrace();
        }
  

Исправлено, использовал этот код ниже, он работает безупречно!!

         list.put("guest_login");
        try {
            obj.put("chips", new JSONObject().put("1", "2000"));
            obj.put("invested", new JSONObject().put("1", "2000"));
            obj.put("login_id", "10");
            JSONArray news = new JSONArray();
            news.put("Welcome to Poker.");
            news.put("Register and get started with 2000 play chips.");
            obj.put("news", news);   
            obj.put("username","Guest10");
            obj.put("epoch", "119677");
            list.put(obj);
        } catch (JSONException e) {
            e.printStackTrace();
        }
  

Комментарии:

1. вау, спасибо, эта библиотека должна быть встроена!!! черт возьми, какую пустую трату времени я проделал с Simple JSON

2. Как бы я приступил к переводу всего этого.. фишки отсекаются с помощью double }}, но с эпохой все в порядке.

Ответ №2:

Я предлагаю вам использовать POJOs. Вы можете использовать этот онлайн-инструмент http://pojo.sodhanalibrary.com /. Как только у вас будет свой POJO, скажем, гостевой класс, вы можете добавить все, что захотите, и если вам все еще нужен JSONObject, вы можете получить его следующим образом:

 Guest guest = new Guest();
guest.setChips(//Anything);

JSONObject jsonObj = new JSONObject( guest );
  

Комментарии:

1. больше классов я предпочитаю просто жестко кодировать json в строке и добавлять больше json позже для сложных массивов json, это невозможно сделать ни с одной библиотекой json, я бы переключился на другую библиотеку json, если это возможно

2. Действительно ли необходимо использовать библиотеку simple?