{
"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 を使用しています。ジェネリックである必要があるため、テンプレートを使用して関数をオブジェクトにマップします。
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());
}
}
}