Преобразование объектов Java в JSON с помощью Jackson
Я хочу, чтобы мой JSON выглядел так:
{
"information": [{
"timestamp": "xxxx",
"feature": "xxxx",
"ean": 1234,
"data": "xxxx"
}, {
"timestamp": "yyy",
"feature": "yyy",
"ean": 12345,
"data": "yyy"
}]
}
код до сих пор:
import java.util.List;
public class ValueData {
private List<ValueItems> information;
public ValueData(){
}
public List<ValueItems> getInformation() {
return information;
}
public void setInformation(List<ValueItems> information) {
this.information = information;
}
@Override
public String toString() {
return String.format("{information:%s}", information);
}
}
и
public class ValueItems {
private String timestamp;
private String feature;
private int ean;
private String data;
public ValueItems(){
}
public ValueItems(String timestamp, String feature, int ean, String data){
this.timestamp = timestamp;
this.feature = feature;
this.ean = ean;
this.data = data;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
public String getFeature() {
return feature;
}
public void setFeature(String feature) {
this.feature = feature;
}
public int getEan() {
return ean;
}
public void setEan(int ean) {
this.ean = ean;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
@Override
public String toString() {
return String.format("{timestamp:%s,feature:%s,ean:%s,data:%s}", timestamp, feature, ean, data);
}
}
Я просто пропустил часть, как я могу преобразовать объект Java в JSON с Jackson:
public static void main(String[] args) {
// CONVERT THE JAVA OBJECT TO JSON HERE
System.out.println(json);
}
мой вопрос: Являются ли мои занятия правильно? Какой экземпляр я должен вызвать и как я могу достичь этого вывода JSON?
6 ответов:
преобразовать ваш
objectв JSON с Джексоном:ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter(); String json = ow.writeValueAsString(object);
Это может быть полезно.........
objectMapper.writeValue(new File("c:\employee.json"), employee); // display to console Object json = objectMapper.readValue( objectMapper.writeValueAsString(employee), Object.class); System.out.println(objectMapper.writerWithDefaultPrettyPrinter() .writeValueAsString(json));
Я знаю, что это старый (и я новичок в java), но я столкнулся с той же проблемой. И ответы были не так ясны мне, как новичку... поэтому я решил добавить то, что узнал.
я использовал стороннюю библиотеку, чтобы помочь в этом начинании:
org.codehaus.jacksonВсе загрузки для этого можно найти здесь.для базовой функциональности JSON вам нужно добавить следующие банки в библиотеки вашего проекта: jackson-mapper-asl и jackson-core-asl
выберите версию, которая нужна вашему проекту. (Обычно вы можете пойти с последней стабильной сборки).
как только они будут импортированы в библиотеки вашего проекта, добавьте следующее
importстроки вашего кода:import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper;с определенными и назначенными значениями объекта java, которые вы хотите преобразовать в JSON и вернуть как часть веб-службы RESTful
User u = new User(); u.firstName = "Sample"; u.lastName = "User"; u.email = "[email protected]"; ObjectMapper mapper = new ObjectMapper(); try { // convert user object to json string and return it return mapper.writeValueAsString(u); } catch (JsonGenerationException | JsonMappingException e) { // catch various errors e.printStackTrace(); }результат должен выглядеть так:
{"firstName":"Sample","lastName":"User","email":"[email protected]"}
Ну даже принятого ответа нет ровно вывод, что ОП попросил. Он выводит строку JSON, но с
"герои сбежали. Поэтому, хотя может быть немного поздно, я отвечаю, надеясь, что это поможет людям! Вот как я это делаю:StringWriter writer = new StringWriter(); JsonGenerator jgen = new JsonFactory().createGenerator(writer); jgen.setCodec(new ObjectMapper()); jgen.writeObject(object); jgen.close(); System.out.println(writer.toString());
public class JSONConvector { public static String toJSON(Object object) throws JSONException, IllegalAccessException { String str = ""; Class c = object.getClass(); JSONObject jsonObject = new JSONObject(); for (Field field : c.getDeclaredFields()) { field.setAccessible(true); String name = field.getName(); String value = String.valueOf(field.get(object)); jsonObject.put(name, value); } System.out.println(jsonObject.toString()); return jsonObject.toString(); } public static String toJSON(List list ) throws JSONException, IllegalAccessException { JSONArray jsonArray = new JSONArray(); for (Object i : list) { String jstr = toJSON(i); JSONObject jsonObject = new JSONObject(jstr); jsonArray.put(jsonArray); } return jsonArray.toString(); } }
Comments