Java 如何使用GSON将字符串数组数据正确编码为JSON?
我在Java项目中使用GSON以Java 如何使用GSON将字符串数组数据正确编码为JSON?,java,json,gson,Java,Json,Gson,我在Java项目中使用GSON以JSON格式对数据(从数据库中提取并存储到String数组中)进行编码。看起来一切正常,但问题在于字符串的大小。例如,我有以下字符串数组: String [] data = new String[12]; 假设我的字符串数组包含以下数据:{“ABC”、“DEF”、“GH”、“IJ”} 然后编码的JSON数据是:[“ABC”、“DEF”、“GH”、“IJ”、“u0000”、null、null、null、null、null、null] JSON数据中空值的数量取决于
JSON
格式对数据(从数据库中提取并存储到String
数组中)进行编码。看起来一切正常,但问题在于字符串的大小。例如,我有以下字符串数组:
String [] data = new String[12];
假设我的字符串
数组包含以下数据:{“ABC”、“DEF”、“GH”、“IJ”}
然后编码的JSON数据是:[“ABC”、“DEF”、“GH”、“IJ”、“u0000”、null、null、null、null、null、null]
JSON数据中空值的数量取决于myString
数组中可用的数据数量
因为数据是从数据库中检索的,所以我不能为我的字符串
数组声明特定的大小
我使用以下代码将String
数据编码为JSON
格式
Gson gs = new Gson();
gs.toJson(data); //data String array contains data from database
有人能告诉我如何从JSON数据中跳过/删除这些空值吗?如果您对处理数组大小感到不舒服,请使用ArrayList
并将数据库中的每个结果添加到其中。然后,当您完成数据库方面的工作时:
data = arrayList.toArray(new String[arrayList.size()]);
这保证了数据
对象的大小正好可以容纳您的数据。首先是一个与问题没有直接关系的建议。你在评论中说:
当我以data[index++]的格式加载数据时,为了删除不需要的垃圾,我使用data[index]=“\0”。可能为此添加了\u000
我强烈建议您将数据加载到列表中
,因为您似乎不太习惯使用数组
不要使用String[]data=new String[12]
而使用List data=new ArrayList()
。然后,在加载数据时,不要使用data[index++]
而是使用data.add
然后调用new Gson().toJson(data)
将按照您的预期工作
无论如何,要准确回答您的问题,您只需清理阵列即可
String [] data = {"ABC", "DEF", "GH", "IJ", "\u0000", null, null, null, null, null, null};
System.out.println("data = " + new Gson().toJson(data));
int i = 0;
for (; i < data.length && data[i] != null && !Objects.equals(data[i],"\u0000"); i++) ;
String[] cleanData = Arrays.copyOf(data, i);
System.out.println("cleanData = " + new Gson().toJson(cleanData));
数据
数组的大小始终定义为12?当您从数据库加载数据时,多余的容量用null填充?那么\u0000
字符串呢?不,它只是一个示例。一类数据可能小于12,其他数据可能大于12[取决于项目要求]。是,多余的容量用null填充。我不知道为什么要添加“\u000”。当我以data[index++]的格式加载数据时,为了删除不需要的垃圾,我使用data[index]=“\0”
。可能为此添加了\u000
。
data = ["ABC","DEF","GH","IJ","\u0000",null,null,null,null,null,null]
data = ["ABC","DEF","GH","IJ"]