Преобразование списка массивов в строку объекта json
У меня есть метод класса модели, который возвращает список объектов, который содержит все зарегистрированные данные пользователя. Я хочу получить список, восстановленный методом all(), и преобразовать данные в объект JSON и передать его в виде, подобном строке. Как я могу сделать это преобразование этого списка массивов в объект JSON?
Я не смог сделать это ниже:
ObjectMapper mapper = new ObjectMapper();
JSONObject json = new JSONObject();
JsonNodeFactory jsonnode = JsonNodeFactory.instance;
ObjectNode result = new ObjectNode(jsonnode);
for (int i = 0; i < list.size(); i++) {
json.put(list.get(i).fname, list.get(i));
System.out.println(json.get("fname"));
}
@Entity
class Mydata extends Model {
@Id
public Long Id;
public String fname;
public String lname;
public String city;
public String state;
/****************** READ/select OPERATION *****************/
public static Finder < Long, Mydata > finder = new Finder(Long.class, Mydata.class);
public static List < Mydata > all() {
return finder.all();
}
public static void createuser(Mydata user) {
user.save();
}
}
Ответы
Ответ 1
Чтобы преобразовать ArrayList в Json, просто скачайте утилиту Open Source json из:
http://json.org/java/ или файл Jar из здесь
И просто сделайте:
JSONArray jsonAraay = new JSONArray(your_array_list);
Что он
Примечание. В вашем классе POJO/MODEL у вас должен быть setter/getter для преобразования arraylist в json
Ответ 2
Не беспокойтесь о org.json, используйте Jackson полностью:
// list is a List<MyData>
final ObjectMapper mapper = new ObjectMapper();
final Map<String, MyData> map = new HashMap<>();
for (final MyData data: list)
map.put(data.fname, data);
final JsonNode json = mapper.valueToTree(map);
Ответ 3
Вы можете использовать всевозможные сторонние библиотеки, например, другие, которые предлагали здесь, или просто использовать собственные упрощенные методы Play для этого (найдено в play.libs.Json
), который работает с объектами Jackson, но он интегрирован в структуру и требует много меньше кода для использования, например:
JsonNode myJsonNode = Json.toJson(MyListObject);
, который преобразует объект List в объект JsonNode, затем используйте что-то вроде String jsonResult = Json.stringify(myJsonNode);
для преобразования его в строковое представление.
Если вы используете JSON в шаблоне, не забудьте обернуть его чем-то вроде @Html(myJsonString)
, чтобы он ничего не избежал. В противном случае, если вы просто выведете чистый JSON в браузер, простейший return ok(jsonResult);
будет работать, так как Play автоматически установит тип содержимого.
Ссылка ссылки: http://www.playframework.com/documentation/api/2.0/java/play/libs/Json.html
Ответ 4
Вы посмотрели на это:
http://www.json.org/javadoc/org/json/JSONObject.html#valueToString(java.lang.Object)
JSONObject.valueToString(<<your list of custom object>> OR <<objects>> OR <<map>>)
работает просто отлично... есть некоторые другие методы в этом lib, если вам интересно....