2013-04-29 216 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是不一样的!