2017-05-19 8 views
0

にJSONへのHTTPサーブレットリクエスト私はモデルクラスを持っている...変換私の定義されたオブジェクト

public class Incident implements Serializable { 
    private Long id; 
    private Integer refNo; 
    private String type; 
    private Double lossAmt; 
    private Date incidentDate; 
    private Date incidentTime; 
    private Date reportingDate; 
} 

FTLのような...

 <form action="saveIncident.do" method="POST" > 

     <input type="text" name="type" value="A"> 
     <input type="text" name="refNo" value="546"> 
     <input type="text" name="lossAmt" value="45000"> 
     <input type="text" name="incidentDate" value="10/05/2017"> 
     <input type="text" name="reportingDate" value="18/05/2017"> 

     <input type="submit" value="Save"> 
    </form> 

私はHttpServletRequest request

からオブジェクトを取得しようとしています
Map<String, String[]> map = request.getParameterMap(); 
    String formData = new Gson().toJson(map); 

上記のコードは、formDataという値{"type":["A"],"lossAmt":["45000"],"incidentDate":["10/05/2017"],"reportingDate":["18/05/2017"],"refNo":[""]}として返されます。それから私は私が..

formData = formData.replaceAll("[\\[ \\]]", ""); // {"type":"A","lossAmt":"45000" .... 

を使用してアレイシンボル[ & ]のでReplaceAllときに正常に動作し、このスローcom.google.gson.JsonSyntaxException

Gson gson = new GsonBuilder().setDateFormat("dd/MM/yyyy").create(); 
    Incident incident = gson.fromJson(formData, Incident.class);  

...と呼ばれるしかし。したがって、配列記号を置き換えずに Incidentオブジェクトにどのように変換できますか?問題は、あなたがパラメータを解析する時点で、すでにある私見

com.google.gson.JsonSyntaxException

答えて

1

、あなたはあなたのパラメータが配列の参照として

Map<String, String[]> map = request.getParameterMap(); 
String formData = new Gson().toJson(map); 

{"type":["A"], ... } 

Gsonは配列をスカラー(単純変数)自体に変換しません。を参照してください。

私が試してみた:

Map<String, String> params = new HashMap<>(); 

    Map<String, String[]> parameterMap = request.getParameterMap(); 
    parameterMap.forEach((key,value) -> { params.put(key, value[0]); }); 

を簡略化のため、ここでは、非null値を仮定し、存在する場合、他の(複数の)値を無視しています。あなたはそれに対処する必要があります

+0

複数の入力がある場合、 '{" type ":[" A "、" B "]、...}のように同じ名前が付いてくるでしょうか? –

+1

@ M.A.Khomeni次に、複数の "id"要素をインシデントタイプにマップする計画はどうですか? jsonをオブジェクトにマップする場合、json構造はオブジェクト型の構造を表す必要があります – gusto2

関連する問題