2012-07-13 73 views
1

我無法解析TJE JSON對象從阿賈克斯servlet返回,如何解析JSON對象阿賈克斯

我需要把JSON對象值有相對場

從我的Java代碼我我在JSON

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

的形式發送下面的字符串中的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", 
    datatype:"json", 
}); 
+0

創建JSON使用'org.json'庫。 https://github.com/douglascrockford/JSON-java – iNan 2012-07-13 12:45:24

+0

你的字符串看起來不是JSON(雖然很難說,因爲你向我們展示了生成它的Java而不是JSON文本本身)。正如iNan所說 - 不要通過將字符串混合在一起來構建JSON,請使用適當的序列化程序。 – Quentin 2012-07-13 12:49:49

+0

好點。還有[Jackson](http://wiki.fasterxml.com/JacksonHome),可用於(除其他外)將Java對象映射到JSON,反之亦然。對於你的用例可能太強大了,但我不知道。 – Wolfram 2012-07-13 13:55:59

回答

2

注意,jQuery的設置是dataType大寫T.要做到JSON解析手動,使用parseJSON功能。但是,如果將您的servlet響應的Content-Type設置爲application/json,則應該自動檢測數據類型。

你解決了這個問題後:是否行得通? success處理程序的data參數的值是多少?

console.debug(data); 

正如尼爾已經說過,JSON解析預計有效的JSON字符串開始使用jQuery 1.4。您可以驗證您的JSON jsonlint.com

In jQuery 1.4 the JSON data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown. (See json.org for more information on proper JSON formatting.)

爲了避免JSON串的手動建築,使用類似JSON-java處理器(從iNan's comment)或其他Java實現上json.org列出。

0

你JSON STRI ng是不正確

必須被雙引號包圍。

Read the requirements here

+0

你能幫我寫一下json字符串嗎? – 2012-07-13 12:30:28

+0

@KunalVashist查看網站。 – Neal 2012-07-13 12:30:45

+0

@KunalVashist [這是關於JSON for Java的一些文檔](http://www.json.org/java/) – Neal 2012-07-13 12:31:10

0

如果它創建因爲單倒逗號(')的問題,那麼就這樣做:

jQuery.parseJSON(data.replace(/'/g, '"')) 

如果是這樣的話,那麼它應該爲你工作...

+0

沒有看到問題中使用了哪個'''。一般來說,這種問題應該是服務器端的固定問題,因此生成有效的JSON並提供給客戶端。 – Wolfram 2012-07-13 14:07:38