我将一个数组放在一个发送到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);
}
答案 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。