Springboot不能直接以JSONArray作为参数接收json数组字符串

前端js代码

var initTree =
    [
    {
        "text": "Title/Notes",
        "href": "#TitleNotes"
    },
    {
        "text": "Options",
        "href": "#Options"
    },
    {
        "text": "Climatology",
        "href": "#Climatology"
    },
    {
        "text": "Hydrology",
        "href": "#Hydrology",
        "nodes":[
            {
                "text": "Rain Gages",
                "href": "#RainGages"

            },
            {
                "text": "Subcatchments",
                "href": "#Subcatchments"
            }
        ]
    },
    {
        "text": "Hydraulics",
        "href": "#Hydraulics",
        "nodes": [
            {
                "text": "Nodes",
                "href": "#Nodes",
                "nodes": [
                    {
                        "text": "Junctions",
                        "href": "#Junctions"
                    },
                    {
                        "text": "Outfalls",
                        "href": "#Outfalls"

                    },
                    {
                        "text": "Dividers",
                        "href": "#Dividers"

                    },
                    {
                        "text": "Storage Units",
                        "href": "#StorageUnits"

                    }
                ]
            },
            {
                "text": "Links",
                "href": "#Links",
                "nodes": [
                    {
                        "text": "Conduits",
                        "href": "#Conduits"
                    },
                    {
                        "text": "Pumps",
                        "href": "#Pumps"
                    },
                    {
                        "text": "Orifices",
                        "href": "#Orifices"
                    },
                    {
                        "text": "Weirs",
                        "href": "#Weirs"
                    },
                    {
                        "text": "Outlets",
                        "href": "#Outlets"
                    }
                ]
            },
            {
                "text": "Transects",
                "href": "#Transects"
            },
            {
                "text": "Controls",
                "href": "#Controls"
            }
        ]
    },
    {
        "text": "Quality",
        "href": "#Quality",
        "nodes":[
            {
                "text": "Pollutants",
                "href": "#Pollutants"
            },
            {
                "text": "Land Uses",
                "href": "#LandUses"
            }
        ]
    },
    {
        "text": "Curves",
        "href": "#Curves",
        "nodes":[
            {
                "text": "Control Curves",
                "href": "#ControlCurves"
            },
            {
                "text": "Diversion Curves",
                "href": "#DiversionCurves"
            },
            {
                "text": "Pump Curves",
                "href": "#PumpCurves"
            },
            {
                "text": "Rating Curves",
                "href": "#RatingCurves"
            },
            {
                "text": "Shape Curves",
                "href": "#ShapeCurves"
            },
            {
                "text": "Storage Curves",
                "href": "#StorageCurves"
            },
            {
                "text": "Tidal Curves",
                "href": "#TidalCurves"
            }
        ]
    },
    {
        "text": "Time Series",
        "href": "#TimeSeries"
    },
    {
        "text": "Time Patterns",
        "href": "#TimePatterns"
    },
    {
        "text": "Map Labels",
        "href": "#MapLabels"
    }
];

ajax post到后台:

function makeTree() {
    $.ajax({
        type:"post",
        dataType:'JSON',
        contentType:"application/json;charset=UTF-8",
        // traditional:true,
        async:true,
        url:"/webswmm/loadTree",
        data:JSON.stringify(initTree),
        success:function (newTree) {
            // 获取geojson
            console.log(data);
        }
    });
}

后台代码:

    @RequestMapping(value = "/loadTree",method = RequestMethod.POST,produces = "application/json;charset=UTF-8")
    @ResponseBody
    public JSONArray loadTree(@RequestBody JSONArray jsonArray)
    {
        return null;
    }

企图用JSONArray类型的参数直接接收前台的json数组字符串,失败。

解决方法:将js发送的json数组包装一下:

function makeTree() {
    $.ajax({
        type:"post",
        dataType:'JSON',
        contentType:"application/json;charset=UTF-8",
        // traditional:true,
        async:true,
        url:"/webswmm/loadTree",
        data:JSON.stringify({initTree:initTree}),
        success:function (newTree) {
            // 获取geojson
            console.log(data);
        }
    });
}

后台:用JSONObject接收,然后取出JSONArray

    @RequestMapping(value = "/loadTree",method = RequestMethod.POST,produces = "application/json;charset=UTF-8")
    @ResponseBody
    public JSONArray loadTree(@RequestBody JSONObject jsonObject)
    {
        JSONArray jsonArray = jsonObject.getJSONArray("initTree");
        return null;
    }

问题解决了,可是不知道为什么?希望路过的大神指点迷津

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
可以把Java数组转换成JSON数组字符串,也可以把JSON数组字符串转换成Java数组,但是JSON数组字符串不能直接转换成JSON数组对象,需要使用JSON库进行解析。 在Java中,可以使用Gson、Jackson等库将Java数组转换成JSON数组字符串,示例如下: ```java import com.google.gson.Gson; public class Main { public static void main(String[] args) { String[] arr = {"hello", "world"}; Gson gson = new Gson(); String jsonArrayString = gson.toJson(arr); System.out.println(jsonArrayString); // ["hello","world"] } } ``` 同样的,也可以将JSON数组字符串转换成Java数组,示例如下: ```java import com.google.gson.Gson; public class Main { public static void main(String[] args) { String jsonArrayString = "[\"hello\",\"world\"]"; Gson gson = new Gson(); String[] arr = gson.fromJson(jsonArrayString, String[].class); System.out.println(arr[0]); // hello System.out.println(arr[1]); // world } } ``` 但是,如果要将JSON数组字符串转换成JSON数组对象,则需要使用JSON库进行解析,示例如下: ```java import org.json.JSONArray; public class Main { public static void main(String[] args) { String jsonArrayString = "[\"hello\",\"world\"]"; JSONArray jsonArray = new JSONArray(jsonArrayString); System.out.println(jsonArray.getString(0)); // hello System.out.println(jsonArray.getString(1)); // world } } ``` 在这个示例中,我们使用了`org.json.JSONArray`类来解析JSON数组字符串,并将其转换成JSON数组对象。需要注意的是,这里的JSON数组对象不是Java中的数组对象,而是JSON库中的一种数据类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值