2013-07-02 67 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; } 
} 

你可能要树立正确的数据类型,但对于像开始时间等...