2013-04-29 273 views
0

我嘗試轉換通過反射生成的類對象並將它們轉換爲JSON字符串。以下是我的方法JSON - 將對象轉換爲JSON數組

public Object creatObjectAsString(String className) { 
    Object objects = null; 
    try { 
     objects = java.lang.reflect.Array.newInstance(Class.forName(className), 1); 
     //System.out.println(objects.toString()); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 
    return objects ; 
} 
public String convertPlainObjectToJSON(Object obj,boolean isArray){ 
    String jsonString="",tempJSON=""; 
    JSONSerializer serializer = new JSONSerializer(); 
    tempJSON = serializer.serialize(obj); 
    if(isArray){ 
     jsonString="["+tempJSON+"]"; 
    }else{ 
     jsonString=tempJSON; 
    } 
    return jsonString; 
} 

我已經硬編碼以下行,因爲我不知道如何創建JSON陣列中,不編程的正確途徑。

if(isArray){ 
    jsonString="["+tempJSON+"]"; 
}else{ 
    jsonString=tempJSON; 
} 

當我印刷方法I得到以下[[null]]未預期的結果convertPlainObjectToJSON

我犯的錯誤是什麼。

請糾正我。

+0

爲什麼不嘗試使用[Gson](http://code.google.com/p/google-gson/)? – SudoRahul 2013-04-29 07:15:07

+0

我也看到,但我的情況是不同的,我使用反射創建對象,並將對象轉換爲JSON或JSON數組。 – 2013-04-29 07:16:10

+1

如果你注意到你的輸出,你可以看到'[[''雙方括號,這意味着'JSONSerializer'已經將它轉換爲'JSONArray'。你不需要手動做。並且regd'null',確保你傳遞給'convertPlainObjectToJSON'方法的'obj'不爲null。 – SudoRahul 2013-04-29 07:19:27

回答

1

如果您發現您的輸出,你可以看到[[雙方括號),這意味着JSONSerializer已經它轉換爲JSONArray。因此,您不需要再手動執行操作。

而關於他們之間的null,這是因爲你通過nullconvertPlainObjectToJSON。發送一個新創建的對象數組(,如@MvG提到),new Object[0],你會得到你想要的!

永遠記得blanknull是不一樣的!