gpt4 book ai didi

来自 Javascript JSONArray 的 Java JSONArray

转载 作者:行者123 更新时间:2023-11-30 11:48:22 26 4
gpt4 key购买 nike

我正在使用 ajax 将 json 对象从 javascript 传递到 java servlet。

var jsonObj = JSON.stringify(objArray); //Then I pass it to Java using ajax.

在我的 Java 中,我从请求中获取 json 字符串,然后创建一个 jsonarray,然后遍历该数组,当我试图从数组中提取一个 json 对象时出现错误。

String dataObj = request.getParameter("obj");
String sql = request.getParameter("sql");
ArrayList<Object> returnArray = new ArrayList<Object>();
int key;

//Get type of object being passed.
JSONArray jsonArray = JSONArray.fromObject(dataObj);
for(int i=0; i<jsonArray.size(); i++) {
String obj = new Gson().toJson(jsonArray.getJSONObject(i)); //This is where i'm getting an error
String className = getClassName(jsonArray.getJSONObject(i));

Class targetClass = null;
try {
targetClass = Class.forName(className);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

//Create Object
Object data = new Gson().fromJson(obj, targetClass);

我发布了相关代码,for 循环没有关闭,因为其余代码很长,这是我遇到错误的部分。

net.sf.json.JSONException: JSONArray[0] is not a JSONObject.

这是从 javascript 传入的 json 数组的样子。这是 jsonArray 对象的 println。

[{"number":"(123) 456-7050","type":"Home","contactId":1,"id":16662,"className":"beans.PhoneNumber","position":0}]

只要有一个对象,这段代码就可以工作。但是一旦我得到 2 个或更多,我的错误就出现了。

[[{"number":"(123) 456-7050","type":"Home","contactId":1,"id":16662,"className":"beans.PhoneNumber","position":1},{"number":"(555) 555-1233","type":"Mobile","contactId":1,"id":16656,"className":"beans.PhoneNumber","position":0},{"number":"(999) 999-9999","type":"Home","contactId":1,"id":16664,"className":"beans.PhoneNumber","position":3},{"number":"(222) 222-2222","type":"Home","contactId":1,"id":16666,"className":"beans.PhoneNumber","position":4}]]

当我传递多个对象时,它几乎看起来像是创建了一个数组的数组,这可能就是它不起作用的原因。但是,当我从 javascript 传递 jsonarray 时,我该如何避免这样做呢?仅使用 dataObj,我无法访问大小或循环遍历它。

最佳答案

    [
[
{
"number":"(123) 456-7050","type":"Home",
"contactId":1,
"id":16662,
"className":"beans.PhoneNumber",
"position":1
},
{
"number":"(555) 555-1233",
"type":"Mobile",
"contactId":1,
"id":16656,
"className":"beans.PhoneNumber",
"position":0
},
{
"number":"(999) 999-9999",
"type":"Home",
"contactId":1,
"id":16664,
"className":"beans.PhoneNumber",
"position":3
},
{
"number":"(222) 222-2222",
"type":"Home",
"contactId":1,
"id":16666,
"className":"beans.PhoneNumber",
"position":4
}
]
]

这不是一个对象数组。这是对象数组的数组。根据您的描述,您希望将以下内容提供给您的 Java:

[{"foo":"bar"}, {"bar":"baz"}]

但你真的想解析:

[[{"foo":"bar"}, {"bar":"baz"}]]

关于来自 Javascript JSONArray 的 Java JSONArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8847253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com