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"}]"}]

そして、これはデータをシリアル化するために使用されるクラスです。私は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);
4

4 に答える 4

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"
            }
        ]
    }
]

または、Details を文字列プロパティ (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\"}]"
    }
]

この構造は、現在のオブジェクト モデルにマップできます。ただし、最初のアプローチを使用することをお勧めします。

于 2013-07-02T08:12:15.843 に答える
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"
    }]
}]
于 2013-07-02T08:12:35.270 に答える
0

詳細はタイプ クラス (ユーザー定義クラス) である必要があり、すべてのプロパティを保持する必要があります。

public class Details
{ public int Id {get; set;} ... }
于 2013-07-02T08:13:56.577 に答える
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; }
}

開始時刻などについては、おそらく正しいデータ型を設定したいと思うでしょう...

于 2013-07-02T08:16:40.713 に答える