我需要知道是否有一种更简单的方法可以使用Gson将单个元素Json数组序列化为一个简单的字符串。我的要求是:我有一个对象,它是一个字符串数组。如果数组只包含一个元素,当它被序列化为JSON时,我不希望它表示为数组 - 我希望它表示为一个字符串。因此,例如,如果此数组包含2个元素,则它应如下所示:
[
"Something",
"Nothing"
]
如果数组只包含一个元素,则应该像这样呈现:
"Something"
下面的代码是一个示例类,演示了我找到的解决方案。如果您保留所有未注释的代码,您将获得在Json中正确呈现的2元素数组。如果您注释掉以下行,您将获得一个字符串:
testArray.add("Nothing");
我对这个解决方案的问题是看起来“笨拙”。我必须创建一个单独的“对象”对象才能使其工作,这似乎是不必要的。我还读到可以使用自定义序列化器来实现这一点,但对于这么小的事情来说,这似乎也是很多代码。是否有内置于Gson(或其他图书馆)的内容可以做我想做的事情?
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
public class DemoClassSerialize {
public static void main(String[] args) {
Object testObject = new Object();
JsonArray testArray = new JsonArray();
testArray.add("Something");
//comment out the next line to test the output when there is only one element in this array
testArray.add("Nothing");
if (testArray.size()==1) {
testObject=testArray.get(0);
} else {
testObject=testArray;
}
Gson gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
String gsonString=gson.toJson(testObject);
System.out.println(gsonString);
}
}