2012-07-13 78 views
0

我无法解析TJE JSON对象从阿贾克斯servlet返回,无法解析JSON对象从servlet返回的AJAX

我需要把JSON对象值有相对场

从我的Java代码我在JSON

String webVisitorDetails = "{"+"companyName : "+webVisitor.getCompanyName()+ 
               "address : "+webVisitor.getProfessionalAddress()+ 
               "city : "+webVisitor.getCity()+ 
               "zipCode : "+webVisitor.getZipCode()+ 
               "clientId : "+webVisitor.getCustomerAccountNumber()+ "}"; 


response.setContentType("application/json"); 
       response.getWriter().write(webVisitorDetails); 

的形式发送下面的字符串中的AJAX

$.ajax({ 
    url: "ships", 
    data: { 
     email: email.toString() 
    }, 
    success: function(data) { 
     $.each(data, function(k, v) { 
      console.log(k + " Value " + v); 
      $("#city").text(v.city); 
      $("#zipcode").text(v.getZipCode); 
      $("#Adress").text(v.getProfessionalAddress); 
     }); 
    }, 
    error: function(data) { 
     console.log("error:", data); 
    }, 
    type: "post" 
}); 
+1

您的JSON是不正确......你正在返回{ABC:ABC},而不是{“ABC”:“ABC”} – 2012-07-13 11:06:27

+0

这JSON是从Java – 2012-07-13 11:08:13

+0

的其中一个不加引号来即webVisitor .getCompanyName()来自于特定的方法,所以我需要加上引号 – 2012-07-13 11:08:57

回答

3

你忘了逗号,你应该引用你的价值观

String webVisitorDetails = "{ 
    \"companyName\": \"" + webVisitor.getCompanyName() + "\", 
    \"address\": \"" + webVisitor.getProfessionalAddress() + "\", 
    \"city\": \"" + webVisitor.getCity() + "\", 
    \"zipCode\": \"" + webVisitor.getZipCode() + "\", 
    \"clientId\": \"" + webVisitor.getCustomerAccountNumber() + "\" 
}"; 

编辑:确实=>报价您的键(以防万一) 我不是一个真正的Java专家,但肯定的,如果有是一个使用它的类。

+1

也引用键! – Amberlamps 2012-07-13 11:09:09

+0

糟糕的解决方案 - 无法正常工作。你没有附上引号。 – 2012-07-13 11:10:33

+0

我尝试了所有可能的解决方案,但仍然无法读取ajax中的json对象 – 2012-07-13 12:22:40

0

把你的钥匙和价值放在引号中,并用逗号分开你的配对!

3

另外...你不应该重新发明轮子。 Java有创建“工作”JSON的完美方式。

Map obj=new LinkedHashMap(); 
    obj.put("name","foo"); 
    obj.put("num",new Integer(100)); 
    obj.put("balance",new Double(1000.21)); 
    obj.put("is_vip",new Boolean(true)); 
    obj.put("nickname",null); 
    String jsonText = JSONValue.toJSONString(obj); 
    System.out.print(jsonText); 

    // Result: {"name":"foo","num":100,"balance":1000.21,"is_vip":true,"nickname":null} 
0

除此之外,你JSON是不正确的(见其他答案)的事实,你是通过response对象循环,而你应该通过data对象循环,你作为成功函数的参数

在除此之外,为了遍历数据,你必须从服务器返回一个数组,即把你的json对象放在方括号中([])。

0

从VDP的答案可以看出,你的json没有正确的形成。每个参数后面都需要有一个逗号。

多几个三分球,这可能是有益的:

  • 如果你正在做的JSON量好,如果你的JSON是通过将其粘贴在http://jsonlint.com/

  • 形成正确与否,您可以验证在你的应用程序中处理,我会推荐使用标准的JSON库,如json-simplegson