2013-12-23 3 views
0

Я могу преобразовать bytestream в его представление JSON. Это JSONArray. Я бы хотел, чтобы он был преобразован в bb_test объектов в вектор. Как мне это сделать?Преобразование JSONArray в вектор на BlackBerry

Я использовал этот пример JSON http://codeoncloud.blogspot.com/2013/05/blackberry-java-json-tutorial.html

я получаю данные с сервера, как это:

[ 
    { 
     "settingName": "New", 
     "onclick": "CreateNewDoc()" 
    }, 
    { 
     "settingName": "Open", 
     "settingValue": "OpenDoc()" 
    }, 
    { 
     "settingName": "Close", 
     "settingValue": "CloseDoc()" 
    } 
] 

Так я создаю класс, как этот

package mypackage; 

public class bb_test { 
    String settingName; 
    /** 
    * 
    */ 
    String settingValue; 
    public String getSettingName() { 
     return settingName; 
    } 
    public void setSettingName(String settingName) { 
     this.settingName = settingName; 
    } 
    public String getSettingValue() { 
     return settingValue; 
    } 
    public void setSettingValue(String settingValue) { 
     this.settingValue = settingValue; 
    } 

} 

ответ

0

Прежде всего, сохраните эти параметры в двух строковых массивах с именем settingNameArray и settingValueArray, где вы получаете это данные JSON. Что-то вроде этого

Пусть вся ваша JSON будет получен в следующем массиве, затем

JSONArray arr=new JSONArray(jsonData); 
int size=arr.length(); 
String[] settingNameArray=new String[size]; 
String[] settingValueArray=new String[size]; 
JSONObject[] obj=new JSONObject[size]; 
for(int i=0;i<size;i++) 
{ 
    settingNameArray[i]=arr.getJSONObject(i).getString("settingName"); 
    settingValueArray[i]=arr.getJSONObject(i).getString("settingValue"); 
} 

bb_test.setSettingValue(settingValueArray); 
bb_test.setSettingName(settingNameArray); 

После этого изменить классовую структуру bb_test, чтобы сохранить эти значения. Это будет выглядеть примерно так:

public class bb_test { 
    String settingName[]; 
    String settingValue[]; 
    public bb_test() 
    { 
    } 
    public String[] getSettingName() { 
     return settingName; 
    } 
    public void setSettingName(String[] settingName) { 
     this.settingName = settingName; 
    } 
    public String[] getSettingValue() { 
     return settingValue; 
    } 
    public void setSettingValue(String[] settingValue) { 
     this.settingValue = settingValue; 
    } 
} 
+0

Похоже, он хочет, чтобы один объект 'bb_test' представлял одну пару настроек и значений. Не пара * массивов *. – Nate

0

Ваш класс bb_test в порядке, не нужно его менять, кроме, возможно, соглашения об именах. Вы можете получить массив из таких данных:

Vector bb_testVector = new Vector(); 
JSONArray jsonArray = new JSONArray(jsonData); 
int size = jsonArray.length(); 

    for(int i=0;i<size;i++) 
    { 
     JSONObject tempJSON = jsonArray.getJSONObject(i); 

     String settingName = tempJSON.getString("settingName"); 
     String settingValue = tempJSON.getString("settingValue"); 

     bb_test newBBTest = new bb_test(); 
     newBBTest.setSettingName(settingName); 
     newBBTest.setSettingValue(settingValue); 

     bb_testVector.addElement(newBBTest); 

     //clean memory 
     tempJSON = null; 
     newBBTest = null; 
     settingName = null; 
     settingValue = null; 
    } 
Смежные вопросы