1. ホーム
  2. Java

com.fasterxml.jackson.core.JsonParseException: 認識できないトークン 'xxx' があります。

2022-02-26 15:29:52

jquery ajax コード 

    $.ajax({
        type:"post",
        url:"/webswmm/runModel",
        dataType:'json',
        contentType:"application/json;charset=UTF-8",
        data:{name:'goatling'},
        async:true,
        success:function (data) {
            removeLoading('test');
            showAlertDiologue("success","run");
            resultUrl=data;
        },
        error:function () {
            removeLoading('test');
            showAlertDiologue("fail","run");
        }
    });
    @RequestMapping("/webswmm/runModel")
    @ResponseBody
    public JSONArray runModel(@RequestBody JSONObject jsonObject)
    {

        return dataService.runModel(jsonObject);
    }

JSON parse error: Unrecognized token 'name': was expecting 'null', 'true', 'false' or NaN; nested exception is com.fasterxml.jackson.core. JsonParseException: Unrecognized token 'name': was expecting 'null', 'true', 'false' or NaN
 at [Source: (PushbackInputStream); line: 1, column: 6]

エラーの報告

    $.ajax({
        type:"post",
        url:"/webswmm/runModel",
        dataType:'json',
        contentType:"application/json;charset=UTF-8",
        data:'{"name":"goatling"}',
        async:true,
        success:function (data) {
            removeLoading('test');
            showAlertDiologue("success","run");
            resultUrl=data;
        },
        error:function () {
            removeLoading('test');
            showAlertDiologue("fail","run");
        }
    });

理由

この {name:'goatling'} の形は、標準的なJSON文字列では全くありません。

  '{"name":"goatling"}' これが標準的なJSON文字列です。

修正しました。

    $.ajax({
        type:"post",
        url:"/webswmm/runModel",
        dataType:'json',
        contentType:"application/json;charset=UTF-8",
        data:'{"name":"goatling"}',
        async:true,
        success:function (data) {
            removeLoading('test');
            showAlertDiologue("success","run");
            resultUrl=data;
        },
        error:function () {
            removeLoading('test');
            showAlertDiologue("fail","run");
        }
    });

このように、バックグラウンドで正常に受信されるようになります。