2012-08-09 17 views
5

Düzenleme: Eski sürümle çalışamadığımdan daha kolay hale getirmek için json dosyasının stilini değiştirdim. Java'da dizi içindeki her öğenin adının Target_Name değeri olarak isimlendirildiği bir dizi hedef oluşturabilmem gerekir. Ayrıca farklı nesne isimleri olan tekrarlayan hedef isimleri bir araya getirebilmem gerekiyor. Yani temel olarak bir hedef dizi istiyorum ve her elemanın içinde Type, Pin_number ve yeteneklerini tutan bir dizi nesneye sahip olmak istiyorum.gson kullanarak json dosyasını ayrıştırma konusunda yardıma ihtiyacım var

Hedef liste sınıfı ve bu değişkenlerin içinde hedef adı ve diğer her şey için bir tane oluşturmak zorunda olduğumu biliyorum. Daha önce böyle bir şey denedim ama nasıl çalışacağını bulmakta zorlandım.

{ 
"Targets": [ 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    } 
] 

}

+1

Ne sıcak bir karşılama nesneleri gidiyor @CodeDroid. Belki bunu ilk defa olmayanlar için saklayabilir misin? –

cevap

2

Oldukça yalındır aşağıdaki yüklemek ve düğümleri okumayı bazı kodudur ediyor. Verilerinizi nasıl sorgulayacağınızı bulmanıza yardımcı olacaktır.

Reader reader = null; 
InputStream stream = context.getResources() 
    .openRawResource(R.raw.json_file); 
reader = new BufferedReader(new InputStreamReader(stream), 8092); 

// parse json 
JsonParser parser = new JsonParser(); 
JsonObject jsonObj = (JsonObject)parser.parse(reader); 

// bilgisinin json ayrıştırma arkadaşım StackOverflow'daki değerleri okumak nasıl

JsonArray targets= jsonObj.getAsJsonArray("Targets"); 

List<Target> targetList = new ArrayList<Target>(); 
for (JsonElement target: targets) { 

    JsonObject targetObject = target.getAsJsonObject(); 
    String targetName= targetObject.get("Target_Name").getAsString(); 
    ....//get the rest 

    // create target object 
    targetList.add(new Target(targetName, ....)); 
} 

// Örnekler Aşağıdaki ve sorgu gibi görünmek

for (Entry<String, JsonElement> entry : rootElem.entrySet()) 
{ 
    int key = Integer.parseInt(entry.getKey()); 
    JsonObject jsonObject = entry.getValue().getAsJsonObject(); 
} 


// get integer element 
int key = Integer.parseInt(entry.getKey()); 

// get child object 
JsonObject jsonObject = entry.getValue().getAsJsonObject(); 

// get string element   
String title = jsonObject.get("Object_Name").getAsString(); 
+0

dosyası bir rawresource değil. Google bulutuna bir http bağlantım var ve json dosyasına bir url var. Sorun bu dosyayı ayrıştırmakta ve daha sonra kullanmak için bu değişkenleri kaydetmektir. Bununla birlikte bahsettiğin diğer şeyleri uygulamaya çalışacağım. – zms6445

+0

@ user1586194 json dosyasının kaynağının ne olduğu önemli değil, sadece Reader'dan herhangi bir yere okuyabilir ya da sadece String ve JsonParser.parse() yöntemine verin. – Maxim

+0

JsonParser ve JsonObject, android sdk'de bulunan json sınıfının bir parçası değil midir? Gson'un bir karşılığı var mı? – zms6445

İlgili konular