{
"Employee": [
{
"empMID": "mock:1",
"comments": [],
"col1": "something",
"contact": [{"address":"2400 waterview", "freetext":true}
],
"gender": "male"
},
{
"empMID": "mock:2",
"comments": [],
"col1": "something",
"contact": [{"address":"2200 waterview", "freetext":true}
],
"gender": "female"
}
],
"cola": false,
"colb": false
}
这就是我的 Json 文件的外观。我需要将此 json 转换为 csv 。(我正在尝试将多维数据转换为 2d)。我将 gson 用于我的目的。我不能使用 gson.fromgson()使用模板映射到对象的函数,因为它应该是通用的。
我知道我们可以使用 CDL 将 jsonarray 转换为 csv 格式,但在我的情况下它不起作用。
我的 csv 格式看起来像
Employee*
empMID,comment.$,contact.address,contact.freetext,gender
mock:1,,2400 waterview,TRUE,male
mock:123,,2200 waterview,TRUE,female
colA#
TRUE
colB#
FALSE
我尝试使用 google-GSON api 转换为这种格式。但我无法转换为这种格式。我使用 * 来表示它的 json 数组和 # 来表示它的原始类型和 contact.address 来表示嵌套数组在另一个 json 数组中。我在关联这个嵌套结构时遇到了问题。我能够像列一样递归地遍历所有内容。提前致谢
public static void main(String[] args) throws IOException{
BufferedReader reader=null;
StringBuilder content=null;
String result=null;
reader = new BufferedReader(new FileReader("temp.json"));
String line = null;
content= new StringBuilder();
while ((line = reader.readLine()) != null) {
content.append(line);
}
reader.close();
result= content.toString();
JsonElement jelement = new JsonParser().parse(result);
printJsonRecursive(jelement);
}
public static void printJsonRecursive(JsonElement jelement){
if(jelement.isJsonPrimitive()){
System.out.println(jelement.getAsString());
return;
}
if(jelement.isJsonArray()){
JsonArray jarray= jelement.getAsJsonArray();
for(int i=0;i<jarray.size();i++){
JsonElement element= jarray.get(i);
printJsonRecursive(element);
}
return;
}
JsonObject jobject= jelement.getAsJsonObject();
Set<Entry<String, JsonElement>> set= jobject.entrySet();
for (Entry<String, JsonElement> s : set) {
printJsonRecursive(s.getValue());
}
}
}