Я хочу сделать объект JSON из базы данных, но есть одна сложная структура. Я не понимаю, как сделать сложную структуру, такую как "значения" в следующей строке Json.Помощь кому угодно, спасибо заранее. Это строка Json, которую я хочу сделать:
[{"type":"person1","id":null,"values":[[[32.3619,50.9291],[32.3604,50.9644],[32.3446,50.9395]]]}]
Код Я еще пробовал.
Session sess1 = sf.openSession();
Query q = sess1.createQuery("from person");
List l = q.list();
Iterator itr = l.iterator();
JSONArray jArray = new JSONArray();
JSONObject jObj = new JSONObject();
String id = null, lat, lng;
while (itr.hasNext()) {
Person pobj = (Person) itr.next();
id = pobj.getId().toString();
lat = pobj.getLatitude();
lng = pobj.getLongitude();
}
jObj.put("type", "Person1");
jObj.put("id", id);
JSONArray jrray = new JSONArray();
jArray.put(jObj);
JSONObject jObjDevice = new JSONObject();
jObjDevice.put("", jArray);
System.out.println("json object created" + jObjDevice.toString());
Использование jackson...
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
public class MapToJsonExample {
private static final String pathToJsonResult = "example.json";
public static void main(String[] args) {
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> mapObject = new HashMap<String, Object>();
mapObject.put("type", "person1");
mapObject.put("id", null);
List<Object> myList = new ArrayList<>();
List<Double> point1 = Arrays.asList( 32.3619,50.9291 );
List<Double> point2 = Arrays.asList( 32.3446,50.9395 );
List<List<Double>> innerList = new ArrayList<>();
List<List<List<Double>>> outerList = new ArrayList<>();
innerList.add( point1 );
innerList.add( point2 );
outerList.add( innerList );
mapObject.put( "values", outerList );
try {
objectMapper.writeValue(new File(pathToJsonResult), mapObject);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Здесь, используя Windows и Java7,
Скомпилируйте его..
javac -cp .;jackson-all-1.9.11.jar MapToJsonExample.java
Запустить его...
java -cp .;jackson-all-1.9.11.jar MapToJsonExample
Вуаля!
type example.json
{"values":[[[32.3619,50.9291],[32.3446,50.9395]]],"id":null,"type":"person1"}
Я полагаю, вы используете реляционную базу данных, такую как MySQL. Чтобы получить свою запись в форме объекта, вы можете использовать Hibernate ORM. Вы можете найти множество обучающих программ в Интернете.
если вы используете java, то сделайте один модальный класс таким же, как поле таблицы базы данных и набор результатов db, преобразованный в этот модальный класс.... модальный класс - это объект java.....
Основываясь на том Java-объекте, используйте gson [com.google.code.gson] lib и конвертируйте его...
Вы просто гуглили много примеров там.
Я бы посоветовал вам избежать всего этого шаблона кода и использовать JPA и фреймворки, такие как Jackson или аналогичные. Разработчики бизнес-приложений не должны тратить время на эти объекты инфраструктуры :)))