【问题标题】:JSON String - more than two parameters - receiving null at servletJSON 字符串 - 超过两个参数 - 在 servlet 接收 null
【发布时间】:2017-07-24 12:18:49
【问题描述】:

我从 jQuery 传递两个 JSON 对象 - 使用 JSON Stringify 对 servlet 的 ajax 调用。但我越来越空了。如果我通过一个对象,我将获得预期的数据,但我无法接收两个对象。请帮我找出我的错误。

$.ajax({
    url : 'insertserv1',
    type: 'POST',
    dataType: 'json',
    data: JSON.stringify({"test1" :masterdata,"test2" :InspTableArray}),
    contentType: 'application/json',
    mimeType: 'application/json',
    success : function(data) {
        alert('Hi');
    }
});
BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));       

if (br != null) {
    json = br.readLine();
}

System.out.println(json); // getting expected data as {"test1":{"grn":"55555","pono":"888888","row":1},"test2":["Type/,"As ","ok","ok","ok","ok","ok"]}

try {
   JSONObject rawdata = new JSONObject(json);
   JSONObject datat1 = rawdata.getJSONObject("test1");
   JSONObject datat2 = rawdata.getJSONObject("test2");

   System.out.println(datat1); // return nulls
   System.out.println(datat2); // return nulls

【问题讨论】:

  • I am passing two JSON object from jquery - 不,您正在传递一个具有两个顶级属性 test1 和 test2 的对象的 JSON 字符串
  • 对不起。你能告诉我上面的代码有什么问题吗
  • 恐怕我对java的了解不够……你的javascript代码看起来不错……你的java代码对我来说是陌生的
  • 您查看过rawdata 实际包含的内容吗?
  • @DanielBarbarian 没有。它没有返回任何

标签: javascript java jquery json servlets


【解决方案1】:

InspTableArray 中发送的 JSON 无效,因此当您尝试在 Java 中解析它时,它会中断:

{"test1":{"grn":"55555","pono":"888888","row":1},"test2":["Type/,"As ","ok","ok","ok","ok","ok"]}
// Problem is this character here    --------------------------^
// which breaks the JSON Array of strings

// The value should be "Type" instead of "Type/
// and is likely causing a SyntaxError: Unexpected token A in JSON at position 66

test2 似乎是一个字符串数组,除了第一个不是字符串的元素并导致数组的其余部分中断,应该是:

"test2":["Type","As ","ok","ok","ok","ok","ok"]
//            ^------ forward slash replaced with closing double-quotation mark

【讨论】:

  • okie。所以你的意思是,我们不能给出任何特殊字符,包括空格?
  • JSON 是 JavaScript 对象表示法的一种变体,它是名称/值对的集合。 Check out the JSON docs for the full spec
  • 但是。现在我的字符串就像 {"test2":["TypeRating","AsperPO","ok","ok","ok","ok","ok"]},但现在我也无法得到任何数据
  • 所以System.out.println(datat2); 仍然输出null
猜你喜欢
  • 2013-09-02
  • 2012-01-16
  • 2019-03-03
  • 2021-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
相关资源
最近更新 更多