1

2D 配列の JSON をスプリング コントローラーに渡していますが、ジャクソン エラーが発生します。

    org.codehaus.jackson.map.JsonMappingException: 
    Can not deserialize instance of java.lang.String[] out of VALUE_NUMBER_INT token

私のjavascript 2D配列は次のようになります。

[ ["John", "Doe", "worker", "fulltime"], 
  ["Adam", "Smith", "nonworker", "temp"],
  ["Jane", "Doe", "worker", "fulltime"] ]

このように 2D 配列にマップされる Bean クラス。

public class MyBean implements java.io.Serializable {

    private static final long serialVersionUID = -3948256457L;


    String[][] workInfo = null;


    public String[][] getWorkInfo() {
        return workInfo;
    }


    public void setWorkInfo(String[][] workInfo) {
        this.workInfo = workInfo;
    }           

}

スプリングコントローラーでは、このようなものを使用しています。

    public ModelAndView addData(@RequestBody MyBean tempForm) throws Exception{

    ModelAndView model = new ModelAndView(new org.springframework.web.servlet.view.json.MappingJacksonJsonView());

    try{
        myService.addData(tempForm);

        model.addObject("mesage", "success");   
    }
    catch(Exception e)
    {           
        model.addObject("mesage", "error");
        log.error("error:"+e);
    }

    }

誰でもこの問題を解決する方法を提案できますか?

4

2 に答える 2

0

2D 配列の json オブジェクトを調べることで、この問題を解決しました。1D配列と他の値が混在していたことがわかります。フォーム Bean 側では 2D 配列を期待していましたが、jackson はそれが 1D 配列であると考えましたが、変換できませんでした。

ModelAndView モデル = new ModelAndView(新しい org.springframework.web.servlet.view.json.MappingJacksonJsonView());

翻訳を行うので、ほとんどの場合、オブジェクトが両側で同様に送信される場合、フォーム Bean クラスに jackson アノテーションを追加する必要はありません。 2D 配列。また、jsp や他のページなどにフォーム タグがあることを確認してください。

于 2013-09-19T23:39:26.610 に答える