前提
※この質問は以前の「JavaでCSVファイルを取得して、データをJSON形式にしたい。」の続きになります。
https://teratail.com/questions/8yn8kh5e81l8y5
Javaの勉強でCSVファイルを取得してそのファイル内のデータをJSON形式にするプログラム作っています。
しかし、【想定のJSON形式】のようにうまくいきません。。
想定通りに作成するにはどのように修正すればよろしいでしょうか。
お手数ですが、ご協力をお願いいたします。
課題
・現状DataList としたいところがnullになっていまう。
→現状の結果に記載の{null=[」は{”DataList”:[ としたい。
・以下のように設定したい
キー:"DataList"(リスト文字列)
キー:"ID"(文字列) 値:文字列
キー:"Name"(文字列) 値:文字列
キー:"Type"(文字列) 値:文字列
キー:"Level"(文字列) 値:数値
→特にLevelだけ上記のように設定する方法が分からない。
CSVファイルの中身と想定のJSON形式
【Zukan.csv】
ID Name Type Level
1 ニャオハ 草 5
2 クワッス 水 6
3 ホゲータ 炎 10
4 パモ 電気 1
5 グルトン 無 3
【想定のJSON形式】
{ "DataList": [ { "ID": "001", "Name": "ニャオハ", "Type": "草", "Level": 5 }, { "ID": "002", "Name": "クワッス", "Type": "水", "Level": 6 }, { "ID": "003", "Name": "ホゲータ", "Type": "炎", "Level": 10 }, { "ID": "004", "Name": "パモ", "Type": "電気", "Level": 1 }, { "ID": "005", "Name": "グルトン", "Type": "無", "Level": 3 } ] }
現状の結果
{null=[["ID","Name","Type","Level"],["1","ニャオハ","草","5"],["2","クワッス","水","6"],["3","ホゲータ","炎","10"],["4","パモ","電気","1"],["5","グルトン","無","3"]]}
該当のソースコード
Java
1import java.util.List; 2 3public class ZukanData { 4//Json形式の設定クラス 5 public static List<DataList> dataList; 6 7 public class DataList { 8 9 String id; 10 11 String name; 12 13 String Type; 14 15 int Level; 16 17 } 18 19}
Java
1import java.io.BufferedReader; 2import java.io.File; 3import java.io.FileReader; 4import java.nio.file.Path; 5import java.nio.file.Paths; 6import java.util.ArrayList; 7import java.util.HashMap; 8import java.util.List; 9import java.util.Map; 10 11import com.fasterxml.jackson.databind.ObjectMapper; 12 13public class CsvtoJsonSample { 14 private static List<DataList> DataList; 15 16 public static void main(String[] args) { 17 Path csvPash = Paths.get("C:\\Zukan.csv"); 18 BufferedReader br = null; 19 String json = null; 20 // データを格納するリスト 21 List<String[]> data = new ArrayList<String[]>(); 22 23 Map<List<DataList>, String> map = new HashMap<>(); 24 String mapJson = null; 25 26 try { 27 File file = new File(csvPash.toString()); 28 29 br = new BufferedReader(new FileReader(file)); 30 ObjectMapper mapper = new ObjectMapper(); 31 // readLineで一行ずつ読み込む 32 String line; 33 while ((line = br.readLine()) != null) { 34 // lineをカンマで分割し、配列リストdataに追加 35 data.add(line.split(",")); 36 } 37 System.out.println(data); 38 json = mapper.writeValueAsString(data); 39 System.out.println(json); //[["ID","Name","Type","Level"],["1","ニャオハ","草","5"],["2","クワッス","水","6"],["3","ホゲータ","炎","10"],["4","パモ","電気","1"],["5","グルトン","無","3"]] 40 map.put(DataList, json); 41 System.out.println(map); //{null=[["ID","Name","Type","Level"],["1","ニャオハ","草","5"],["2","クワッス","水","6"],["3","ホゲータ","炎","10"],["4","パモ","電気","1"],["5","グルトン","無","3"]]} 42 mapJson = mapper.writeValueAsString(map); 43 System.out.println(mapJson); 44 45 } catch (Exception e) { 46 } 47 } 48}
回答3件
あなたの回答
tips
プレビュー