通过JSON向sql数据库发送和接收数组

时间:2017-08-30 07:56:19

标签: javascript java arrays json gson

我将一个数组放在一个发送到java webservice的对象中(参见javascript.js - > sendDataToWebservice())。 Web服务继续执行数组(通过gson)并将其作为String保存在sql数据库中(请参阅webservice.java - > handleDataFunction())。当我想接收数组时,数据没有正确转换回数组(请参阅javascript.js - > receiveDataFromWebservice())。数据将转换为字符串而不是数组:" [" item1"," item2]"。

我需要解析数组吗?我认为问题是介于两者之间的位置添加了引号,因此数据被识别为字符串而不是数组。

提前致谢!

javascript.js

var myArray = new Array();

function sendDataToWebservice() {
    // Create the JSON to send to the webservice
    var jsonData = {
        "action": actionName,
        "array": myArray
    };

    // Send the data
    $.ajax({
        url: "/xaction/",
        type: 'POST',
        data: JSON.stringify(jsonData),
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        async: true,
        success: function (msg) {
            // ...
        }
    });
}

function reveiveDataFromWebservice() {
    // Receive the data
    jQuery.getJSON("/webservice/getdata", function (returningData) {
        if (returningData.success) {
            array= returningData.array;
            }
    });

webservice.java

private void handleDataFunction(inputData) {
    // Create a map for the parameters
    MapSqlParameterSource namedParameters = new MapSqlParameterSource();
    // Create the query string
    String query = "my sql query";
    // Here I want to retrievethe array as a String to store it in the db
    JsonArray jsonArray = currentAntwortFeld.get("array").getAsJsonArray();
    // Add the array as an String to the sql parameters
    namedParameters.addValue("arraydbfield", jsonArray.toString())
    // Execute the sql query
    factory.executeUpdate(query, namedParameters);
}

2 个答案:

答案 0 :(得分:0)

JSON.parse()会将包含数组的字符串转换为数组对象。

myArray = JSON.parse(myString)

不能说明为什么jQuery不能为你做这件事。我认为那是$.getJSON()的重点。但我不会使用jQuery,所以我真的不知道。

答案 1 :(得分:0)

要实现从JSON到SQL的转换,我执行了以下操作:

 let jsArray = [1,2,3,4] //Example array in JS
 let sqlArray = '{';
 jsArray.forEach(element=>sqlArray+=element+',')
 sqlArray = sqlArray.substring(0, sqlArray.length-1) + '}'

现在使用sqlArray适合SQL。