2015-01-15 216 views
1

我想從數據庫中創建JSON對象,但有一個複雜的結構。我並不清楚,如何讓像「價值」的複雜結構下面的Json string.Help任何人,感謝advance.This是JSON字符串,我想打:如何從java中的數據庫中創建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()); 

回答

1

使用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"} 
+0

然後你可以給我一些有用的鏈接或幫助像「價值」這樣的結構:[[[32.3619,50.9291],[32.3604,50.9644],[32.3446,50.9395]]]}]被構建。我是json的新手,我必須很快完成它:( – dolly 2015-01-15 18:28:27

+0

我可能不得不嘗試一些,我認爲你也可以嘗試自己做。另一種方法在這裏說明http://examples.javacodegeeks.com/core-java/json/jackson/convert-java-map-to-from-json-using-jackson-example/ – unigeek 2015-01-15 18:50:10

+0

使用Jackson的示例進行了更新。outerList的聲明非常可怕,IMO,但它應該適合賬單。 – unigeek 2015-01-15 21:55:55

0

,如果你用java然後作出一個模態類相同的數據庫表字段和結果集分貝轉換爲模式類....莫代爾類是java的實體.....

基於該Java實體使用gson [com.google.code.gson] lib並將其轉換...

你只是在那裏看到很多的例子。

0

我鼓勵你避免所有這些樣板代碼,並使用JPA和框架如傑克遜或類似的。業務應用程序開發人員不應該浪費時間在這些基礎設施上:))

0

我想你正在使用像MySQL這樣的關係數據庫。要以對象形式檢索記錄,您可以利用Hibernate ORM。你可以在互聯網上找到大量的教程。

相關問題