2016-04-12 31 views
0

kullanarak Json olarak nasıl elde edilir? sqlite verilerimi tüm sütunlarımdan JSONArray biçiminde biçimlendirmeye çalışıyorum. aşağıdaki gibiSqlite verileri GSON

Benim sqlite veri örnektir: Ben sütunda product altında benim veritabanında bir dize olarak bir JSONArray tasarruf am

id | name | product | 
 
    
 
1 | stev |[{"id":"1","title":"box"}] 
 

 
1 | Lian |[{"id":"2","title":"bag"}] 
 
    
 
1 | beny |[{"id":"3","title":"pen"}]

.

gson library kullanarak jsonArray oluşturmaya çalışıyorum.

[ 
 
\t { 
 
    \t "id":"1", 
 
    \t "name":"stev", 
 
    \t "product":"[{"id":"1","title":"box"}]" 
 
\t }, 
 
\t { 
 
    \t "id":"2", 
 
    \t "name":"Lian", 
 
    \t "product":"[{"id":"2","title":"bag"}]" 
 
\t } 
 
]

Th:

public String composeJSONfromSQLite() { 
 

 
     ArrayList<HashMap<String, String>> offlineList; 
 
     offlineList = new ArrayList<HashMap<String, String>>(); 
 
     String selectQuery = "SELECT * FROM manyofflineCheckouts "; 
 
    
 
     SQLiteDatabase database = this.getWritableDatabase(); 
 
     Cursor cursor = database.rawQuery(selectQuery, null); 
 
    
 
     if (cursor.moveToFirst()) { 
 
      do { 
 
       HashMap<String, String> map = new HashMap<String, String>(); 
 
       map.put(cursor.getString(0)); 
 
       map.put(cursor.getString(1)); 
 
       map.put(cursor.getString(2)); 
 
       offlineList.add(map); 
 

 
      } while (cursor.moveToNext()); 
 
     } 
 
     database.close(); 
 

 
     Gson gson = new GsonBuilder().create(); 
 

 
     //Use GSON to serialize Array List to JSON 
 

 
     return gson.toJson(offlineList); 
 
    }

Ancak bu formatında bana verir:

Bu

i denedim budur "product":"[{"id":"1","title":"box"}]"

Ürünün çevresindeki çift tırnak yüzünden doğru Json biçimi doğru değil. Bunu yapmanın bir yolu var mı?

+0

Eğer ürün değeri bir olmak istiyorum söylüyorsun Gördüğünüz dize yerine JSON dizisi? –

cevap

1

Bunu çözmenin bir yolu, önce product json dizgesini ayrıştırmaktır.

gson.fromJson(cursor.getString(2), Object[].class) yerine cursor.getString(2) muhtemelen durumda çalışacak

İşte

demo:

Gson gson = new GsonBuilder().create(); 

ArrayList<HashMap<String, Object>> offlineList = new ArrayList<>(); 

// here is what i'm taking about 
String product = "[{\"id\":\"2\",\"title\":\"bag\"}]"; 
Object[] productObj = gson.fromJson(product, Object[].class) 

HashMap<String, Object> map = new HashMap<>(); 
map.put("product", productObj); 
map.put("id", 1); 
map.put("name", "stev"); 
offlineList.add(map); 

System.out.println(gson.toJson(offlineList)); 

Sonuç:

[ 
    { 
    "product": [ 
     { 
     "id": "2", 
     "title": "bag" 
     } 
    ], 
    "id": 1, 
    "name": "stev" 
    } 
] 
+0

Bu gerçekten işe yaradı! Harika bir fikir, teşekkürler dostum! –