【发布时间】:2013-12-05 17:08:31
【问题描述】:
我是 Java 新手,遇到了这个问题。我正在用 JavaScript 构建一个数组,看起来像这样
var jsonObj = [];
jsonObj.push(
{
Effect: "Deny",
RuleID: "Rule1"
},
{
Effect: "Deny",
RuleID: "Rule2"
},
{
Effect: "Deny",
RuleID: "Rule3"
},....
)
在此之后,我将使用 Ajax 将其传递给 servlet:
jQuery.ajax({
url: "http://localhost:8080/PolicyConsumerServlet/PolicyServlet",
dataType: "json",
type: 'POST',
data: {jsondata : JSON.stringify(jsonObj)},
contentType: 'application/json',
mimeType: 'application/json',
success: function(data) {
alert('Hi');
},
error: function(jqXHR, textStatus, errorThrown) {
alert("error occurred");
}
});
在 servlet 中,在doPost 方法中我写了下面的代码
StringBuffer jb = new StringBuffer();
String line = null;
BufferedReader reader = request.getReader();
RequestMaker.requestProcess();
while ((line = reader.readLine()) != null)
jb.append(line);
String jsonstring = jb.toString();
Gson gson = new Gson();
Wrapper[] data = gson.fromJson(jsonstring, Wrapper[].class);
System.out.println(jb);
而包装类是
public class Wrapper {
String Effect;
String RuleID;
}
但这会在下面一行抛出异常
Wrapper [] data = gson.fromJson(jsonstring, Wrapper[].class);
解析这个 JSON 有什么问题?
【问题讨论】:
-
尝试将顶级“密钥”添加到您在 JavaScript 中创建的 JSON。例如
{"data" : [..values]} -
但是这种方法有什么问题?
-
Servlets 不是我的域。但是 JSON,根据定义需要遵循键值结构。因此,建议。
标签: java ajax parsing servlets gson