Kısacası, bu JAVA'da ayrıştırmak istediğim JSON nesnesinin bir taslağıdır:JSON'u düzgün bir şekilde serileştirmek için Google'ın Gson API'sını nasıl kullanırım?
{
object1: {
item1: //[String | Array | Object] ,
item2: // ...
//<> more items
object2: { /* .. */ }
//<> more objects
}
Bunlar ayrıştırmak için yaratılmış POJO s'dir (import
ifadeleri için kısırlık uğruna çıkacağım) :
(1) Tam JSON nesnesinin temsili
public class JObjectContainer {
private List<JObject> jObjects ;
public JObjectContainer() { }
//get & set methods
}
(2) Yuvalanmış nesnelerin gösterimi:
public class JObject {
private String id ;
private List<JNode> jObjects ;
public JObject() { }
//get & set methods
}
(3) Öğelerin gösterimi:
public class JNode {
private JsonElement item1 ;
private JsonElement item2 ;
//<> more item fields
public JNode() { }
//get & set methods
}
Şimdi, bir gson örneği (jsonFile
'i içe aktarmak için FileReader
) oluşturmak,
Gson gson = new Gson() ;
JObjectContainer joc = gson.fromJson(jsonFile,JObjectContainer.class) ;
Ayrılabilir nesneyi (örneğin ListIterator
aracılığıyla) erişmeye çalıştığımda NullPointerException
alıyorum. Gson , ancak yapar, belirtilen sınıfın bir nesnesini oluşturur ve , herhangi bir sonraki hataları atar.
Bunun daha önce yapıldığını biliyorum. Peki, neyi özlüyorum?
TIA
Merhaba, cevabınız için teşekkürler! Tıpkı benim javascriptte yaptığım gibi, kapsayıcı içeriğini içerik için düzgün bir şekilde ayrıştırabilmek için tanımlayıcı dizeleri (ör., 'Object1') korumayı planlıyorum. Bunun hakkında nasıl gidebileceğini biliyor musun? – FK82
Bu tanımlayıcı dizeler kapsayıcıya ('düğüm') değil, her öğeye ("Düğüm") bağlanırsa, bunun yerine 'Düğüm' yerine bir özellik yapmalısınız. Bilinmeyen miktarda özellik ve bilinmeyen özellik adları olan JS nesneleri, iyi bir fikir/uygulama değildir. Onları bir diziye koymanız ve diziye sabit bir ad vermeniz gerekir. – BalusC
Bu, JSON'u tamamen birlikte kullanmanın amacını vurgular. JSAV'nin JAVA'daki nesne eşleme stilini yansıtamıyorsam, kendi API'mı yazabilirim. ;-) Temelde bu example while somehow retaining the identifier strings. – FK82