2013-07-02 98 views
0

我有一個JSON數據,當我試圖解析它返回錯誤不正確的語法,請幫我發現語法錯誤。這是json格式正確嗎?

[{"isData":"Yes","Details":"[{"Id":"70","Name":"Test","FileName":"Uploaded","FileFormat":".mp4","FileType":"Video","FileDuration":"00:30:00 ","StartTime":"/Date(1372617000000)/","EndTime":"/Date(1372681771000)/","File":"2562013172331815635077778118152815.mp4"}]"}] 

這是用來串行數據的類,我使用JavaScript串行

public enum Data 
{ 
    Yes, 
    No 
} 

public class MessageResponse() 
{ 
    public string isData { get; set; } 
    public string Details { get; set; } 
} 


     List<MessageResponse> response = new List<MessageResponse>(); 
string strJson="[{"Id":"70","Name":"Test","FileName":"Uploaded","FileFormat":".mp4","FileType":"Video","FileDuration":"00:30:00 ","StartTime":"/Date(1372617000000)/","EndTime":"/Date(1372681771000)/","File":"2562013172331815635077778118152815.mp4"}]"; 
var newData = new MessageResponse 
          { 
           isData = Data.Yes.ToString(), 
           Details = strJson 
          }; 

          response.Add(newData); 

      var jsonSerialiser1 = new JavaScriptSerializer(); 
      string result = jsonSerialiser1.Serialize(response); 
+1

試試吧看看? –

+15

http://jsonlint.com/ –

+0

語法錯誤在這裏:'「[{」Id'。 –

回答

2

這是無效的JSON。 Details屬性格式不正確。您應該刪除值附近的引號。它應該是這樣的:

[ 
    { 
     "isData": "Yes", 
     "Details": [ 
      { 
       "Id": "70", 
       "Name": "Test", 
       "FileName": "Uploaded", 
       "FileFormat": ".mp4", 
       "FileType": "Video", 
       "FileDuration": "00:30:00 ", 
       "StartTime": "/Date(1372617000000)/", 
       "EndTime": "/Date(1372681771000)/", 
       "File": "2562013172331815635077778118152815.mp4" 
      } 
     ] 
    } 
] 

,或者如果您想詳細信息是一個字符串屬性(代表JSON),這是有點跛,你應該正確轉義雙引號:

[ 
    { 
     "isData": "Yes", 
     "Details": "[{\"Id\":\"70\",\"Name\":\"Test\",\"FileName\":\"Uploaded\",\"FileFormat\":\".mp4\",\"FileType\":\"Video\",\"FileDuration\":\"00: 30: 00\",\"StartTime\":\"/Date(1372617000000)/\",\"EndTime\":\"/Date(1372681771000)/\",\"File\":\"2562013172331815635077778118152815.mp4\"}]" 
    } 
] 

這種結構您將能夠映射到您當前的對象模型。但我會建議你使用第一種方法。

1

刪除「從細節數據:

[{ 
    "isData":"Yes", 
    "Details": 
    [{ 
     "Id":"70", 
     "Name":"Test", 
     "FileName":"Uploaded", 
     "FileFormat":".mp4", 
     "FileType":"Video", 
     "FileDuration":"00:30:00", 
     "StartTime":"/Date(1372617000000)/", 
     "EndTime":"/Date(1372681771000)/", 
     "File":"2562013172331815635077778118152815.mp4" 
    }] 
}] 
0

細節應該是類的類型(即用戶定義的類),它應該持有的所有屬性

public class Details 
{ public int Id {get; set;} ... } 
0

首先你JSON是無效

它不應該有"之前和之後[]

[ 
    { 
     "isData": "Yes", 
     "Details": [ 
      { 
       "Id": "70", 
       "Name": "Test", 
       "FileName": "Uploaded", 
       "FileFormat": ".mp4", 
       "FileType": "Video", 
       "FileDuration": "00: 30: 00", 
       "StartTime": "/Date(1372617000000)/", 
       "EndTime": "/Date(1372681771000)/", 
       "File": "2562013172331815635077778118152815.mp4" 
      } 
     ] 
    } 
] 

其次,你的類可以被改進爲:

public class MessageResponse 
{ 
    public string isData { get; set; } 
    public Details Details { get; set; } 
} 

public class Details 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string FileName { get; set; } 
    public string FileFormat { get; set; } 
    public string FileType { get; set; } 
    public string FileDuration { get; set; } 
    public string StartTime { get; set; } 
    public string EndTime { get; set; } 
    public string File { get; set; } 
} 

你可能要樹立正確的數據類型,但對於像開始時間等...