#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?