2016-06-28 17 views
2

私はJavaを使用して比較データAと各データを作成しています。Json StringをList <HashMap <String、String >>に変換するにはどうすればよいですか?

まず、txtファイル(配列型ファイル)から配列データを抽出しました。

第2に、データベース(MySQLの列の種類:JSON)にJson Stringデータがあります。

私はインデックスキー、オブジェクトキーを取得することができますTXTファイルを解析され、一覧

FileInputStream fstream = new FileInputStream(Path); 
List<HashMap<String, String>> list = list(fstream); 

public List<HashMap<String, String>> list(FileInputStream fstream) { 
    BufferedReader buff = new BufferedReader(new InputStreamReader(fstream)); 
    List<HashMap<String, String> list = new ArrayList<>(); 

    try { 
    while ((strLine = buff.readLine()) != null) { 
     s = strLine.split(" "); 
     HashMap<String, String> map = new HashMap<>(); 
     pts = s[4].split(":")[1]; 
     ptstime = s[5].split(":")[1]; 
     map.put("pts", pts); 
     map.put("ptstime", getDurationString(ptstime)); 
     if (pts_itv.equals("0") && ptstime_itv.equals("00:00")) { 
     map.put("pts_itv", "0"); 
     map.put("ptstime_itv", "00:00"); 
     } 
     else { 
     map.put("pts_itv", String.valueOf(Long.parseLong(pts) - Long.parseLong(pts_itv))); 
     map.put("ptstime_itv", getDurationString(String.valueOf(String.format("%.4f", Double.parseDouble(ptstime) - Double.parseDouble(ptstime_itv))))); 
     } 
     pts_itv = pts; 
     ptstime_itv = ptstime; 
     list.add(map); 
    } 
    } 
    catch (IOException ex) { 
     LOG.error("ERROR : " + ex.getLocalizedMessage() + ", " + ex.getMessage()); 
    } 
    finally { 
    try { 
     buff.close(); 
    } catch (IOException ex) {} 
    } 
    return list; 
} 

抽出データ

[{pts_itv=0, ptstime=00:00:00.112792, pts=2707, ptstime_itv=00:00}, {pts_itv=192192, ptstime=00:00:08.12079, pts=194899, ptstime_itv=00:00:08.80}, {pts_itv=128128, ptstime=00:00:13.4595, pts=323027, ptstime_itv=00:00:05.3387}, {pts_itv=277277, ptstime=00:00:25.127, pts=600304, ptstime_itv=00:00:11.5532}] 

を作ります。

list.get(0).get("pts_itv"); 

と第二のデータ(MySQLの(列JSONタイプ)からクエリを選択)

rs = Web.getInstance().getList(idx); //get data by sql query 
jObj = (JSONObject) new JSONParser().parse(rs); 
jArr = (JSONArray) jObj.get("data"); 
for (int i = 0; i < jArr.size(); i++) { 
    JSONObject Jarr = (JSONObject) jArr.get(i); 
    System.out.println(Jarr.get("PtsData")); 
} 

PtsData私はPtsDataは、最初のデータ・タイプに変換したい

[{"pts": "81831", "pts_itv": "0", "ptstime": "00:00:03.40963", "ptstime_itv": "00:00"}, {"pts": "127877", "pts_itv": "46046", "ptstime": "00:00:05.32821", "ptstime_itv": "00:00:01.9186"}, {"pts": "157907", "pts_itv": "30030", "ptstime": "00:00:06.57946", "ptstime_itv": "00:00:01.2512"}] 
java.lang.String 

です。 PtsDataをリストタイプに変換するにはどうすればよいですか?

+1

[jackson](https://github.com/FasterXML/jackson)または[Gson](https://github.com/google/gson) – Sampada

+0

さんに感謝してください。私はgson.fromJsonを使って解決しました:) – ofleaf

答えて

0

この問題を解決するためのいくつかの提案があります。

  1. JSONライブラリを使用してJSONデータを解析することで、分割操作を避けることができます。より多くのコードを記述し、より多くのバグを導入し、さらにメンテナンスが必要になります。
  2. オブジェクトモデリングを使用します。これは、HashMapで使用すると読みやすくなります。 peroperties pts、pts_itv、ptstime、ptstime_itvを定義してオブジェクトモデルを作成します。次に、キーと値を選択します。等価とハッシュコードを定義します。それから、自分のやり方でオブジェクトの平等をチェックするか、equalsを使用します。
関連する問題