提问人:Joe 提问时间:8/13/2016 更新时间:8/13/2016 访问量:1003
将 Gson 单元素数组序列化为简单的 String
Serializing Gson single element array as a simple String
问:
我需要知道是否有更简单的方法可以使用 Gson 将单个元素 Json 数组序列化为简单字符串。我的要求是这样的:我有一个对象,它是一个字符串数组。如果数组只包含一个元素,当它序列化为 JSON 时,我不希望它表示为数组 - 我希望它表示为字符串。因此,例如,如果此数组包含 2 个元素,则它应该如下所示:
[
"Something",
"Nothing"
]
如果数组只包含一个元素,则应按如下方式呈现:
"Something"
下面的代码是一个示例类,演示了我找到的解决方案。如果将所有代码保留为未注释,则将获得一个以 Json 正确呈现的 2 元素数组。如果注释掉以下行,则将得到一个字符串:
testArray.add("Nothing");
我对这个解决方案的问题是它看起来“笨拙”。我必须创建一个单独的“Object”对象才能完成这项工作,这似乎没有必要。我还读到可以使用自定义序列化程序来执行此操作,但对于这么小的事情来说,这似乎也需要很多代码。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);
}
}
答: 暂无答案
评论