2014-03-12 87 views
0

我正在從數據庫接收下面的字符串。通過轉義字符解析JSON字符串

{ 
    "MyDetails": { 
     "Type1": "A", 
     "Type2": "B", 
     "Type3": "C", 
     "Type4": "D", 
     "Type5": "E", 
     "Type6": "F", 
     "Date1": "2000-02-11" 
    } 
} 

我創建的語法解析JSON字符串,但上述格式是給我與錯誤的字符串,是不能夠構造一個字符串。

JSONObject obj = new JSONObject("{MYDETAILS:{TYPE: A,CLASS: B}}"); 
System.out.println(obj); 
JSONObject array = obj.getJSONObject("MYDETAILS"); 
System.out.println(array); 
for (int i = 0; i < array.length(); i++) { 
    System.out.println(array.getString("CLASS")); 
} 

如何將字符串從DB轉換爲Java中的有效字符串?

我想這應該給我答案。

問題是從數據庫接收到的字符串數據,我無法轉換成字符串。

如何動態刪除引號,以便我可以形成一個有效的字符串?

+2

你怎麼收? JSON或「{MYDETAILS:{TYPE:A,CLASS:B}}」? – 2014-03-12 11:36:23

+0

我無法解析此{ 「MyDetails」:{ 「類型1」: 「A」, 「類型2」: 「B」, 「類型3」: 「C」, 「類型4」: 「d」, 「成的Type5」:「E」, 「TYPE6」:「F」, 「日期1」:「2000年2月11日」 }} 由於 – ashwinsakthi

+0

目前雙引號的數量是不能夠把它作爲在Java中的字符串。 – ashwinsakthi

回答

0

基本上你都搞不清JSON編碼,這個字符串必須是MyDetails的單個實例對象,你可以分析它是這樣的:

JSONObject ob = obj.getJSONObject("MYDETAILS"); 
System.out.println(ob.getString("CLASS")); 

如果這是真的,MyDetails實際上是一個數組那麼JSON將改爲使用方括號這樣的:

{"MyDetails": [ 
     { "CLASS": "A" }, 
     { "CLASS": "B"},  
    ]} 

在這種情況下,你的代碼是:

JSONArray array = obj.getJSONArray("MYDETAILS"); 
System.out.println(array); 
for (int i = 0; i < array.length(); i++) { 
    System.out.println(array.get(i).getString("CLASS")); 
} 

希望你現在可以看到差異。

+0

JSONObject obj = new JSONObject(「{MYDETAILS:{TYPE:A,CLASS:B}}」); 工作正常。這是我試用的方式。但真正的響應是JSONObject obj = new JSONObject(「{」GVTIDDTL「:{」GVTID_TY_CD「:」NIC「,」OTH_GOVT_ID_TY_TX「:」NATIONAL IDENTIFICATION CARD「,」GVTID「:」ID「,」GVT_ISS_ST_CD「:」NY 「 」GVT_ISS_CNTRY_CD「: 」840「, 」GVTID_ISS_DT「: 」2010-02-01「, 」GVTID_XPRN_DT「: 」2019年2月11日「}}」); – ashwinsakthi

+0

JSONObject obj = new JSONObject(「{」GVTIDDTL「:{」GVTID_TY_CD「:」NIC「,」OTH_GOVT_ID_TY_TX「:」NATIONAL IDENTIFICATION CARD「,」GVTID「:」ID「,」GVT_ISS_ST_CD「:」NY「,」GVT_ISS_CNTRY_CD 「:」 840" , 「GVTID_ISS_DT」: 「2010-02-01」, 「GVTID_XPRN_DT」: 「2019年2月11日」}}「); 拋出錯誤,因爲它不是一個正確的字符串 – ashwinsakthi

2

解析這個JSON

{ 
    "MyDetails": { 
     "Type1": "A", 
     "Type2": "B", 
     "Type3": "C", 
     "Type4": "D", 
     "Type5": "E", 
     "Type6": "F", 
     "Date1": "2000-02-11" 
    } 
} 

你會使用這樣的:

JSONObject root = ...; 
JSONObject details = (JSONObject) root.get("MyDetails"); 
String type1 = (String) details.get("Type1"); 
String type2 = (String) details.get("Type2"); 
// and so on 
+0

嗨盧茨 上午有路過的響應,在Java – ashwinsakthi

+0

參數的麻煩{「GVTIDDTL」:{「GVTID_TY_CD」:「NIC」,「OTH_GOVT_ID_TY_TX」:「國家鑑定CARD」, 「GVTID」: 「ID」, 「GVT_ISS_ST_CD」: 「NY」, 「GVT_ISS_CNTRY_CD」: 「840」, 「GVTID_ISS_DT」: 「2010-02-01」, 「GVTID_XPRN_DT」: 「2019年2月11日」 }} – ashwinsakthi

+0

'GVTID_ISS_DT「中有一些奇怪的空白:」2010-02-01「在你最後的評論中甚至是破解http://jsonlint.com/請修復它。 – 2014-03-12 11:56:13