2016-07-25 42 views
1

我在JSON合成中有一個到期日期,我想在字符串變量中得到這個到期日期,所以我該怎麼辦? 公共類ExpiryDate {單引號中的JSON數據

public String getExpiryDate() throws ParseException, IOException{ 

     String expiryDateString = "{'expire_on':'Aug 05, 2016'}"; 

     JSONParser jsonParser = new JSONParser(); 

     Object obj = jsonParser.parse(expiryDateString); 

     JSONObject jsonObject = (JSONObject) obj; 

     System.out.println(jsonObject); 

     return ""; 
    } 

} 

我傳遞這個JSON數據,但在對象創建行我得到這個例外

Unexpected character (') at position 1. 
    at org.json.simple.parser.Yylex.yylex(Unknown Source) 
    at org.json.simple.parser.JSONParser.nextToken(Unknown Source) 
    at org.json.simple.parser.JSONParser.parse(Unknown Source) 
    at org.json.simple.parser.JSONParser.parse(Unknown Source) 
    at org.json.simple.parser.JSONParser.parse(Unknown Source) 
    at onbording.ExpiryDate.getExpiryDate(ExpiryDate.java:25) 
    at onbording.Sendmail.handleRequest(Sendmail.java:57) 
    at example.sendmailTest.testsendemail(sendmailTest.java:44) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
+0

我看到兩個明確的選項:轉義雙引號(在JSON中不允許單引號)或使用JSONObject使代碼更簡單。 –

+0

yupp現在我通過刪除單引號得到它@Pablo – Vipul

回答

1

You can't use single qoutes

您可能正在使用Java。我建議你使用JSONObject

JSONObject jsonObject = new JSONObject(); 
jsonObject.put("expire_on", "Aug 05, 2016"); 
String expiryDateString = jsonObject.toString(); 

通常比較好的做法是像這樣處理JSON,而不是手動創建JSON字符串。

其他選擇是使用逃脫雙重qoutes。

String expiryDateString = "{\"expire_on\":\"Aug 05, 2016\"}"; 
+0

謝謝@yariash,但我有JSON數據作爲上面解釋來自數據庫和這個字符串我想唯一的日期 – Vipul

+0

如果該字符串存儲在您的數據庫,那麼你有無效的JSON在你的數據庫 –

+0

如果我使用雙引號而不是單引號比我會得到令牌語法錯誤 – Vipul