2

次のような ASP.NET MVC ActionResult 型メソッドから JSON を返したいと考えています。

{
     success: true,
     users: [
    {id: 1, FileName: 'Text22'},
    {id: 2, FileName: 'Text23'}
    ]
}

どのようにフォーマットしますか?今、私はこのようなものを持っています

Return Json(New With {Key .success = "true", Key .users = responseJsonString}, JsonRequestBehavior.AllowGet)

編集:私はVB.NETを使用していますが、C#での回答も問題ありません。

4

2 に答える 2

5

私は、複雑な JSON 応答を手動で作成するよりも、ViewModel を使用することを好みます。データを返すすべてのメソッドに対して一貫性が保証され、厳密に型指定されたプロパティ IMHO を簡単に操作できます。

public class Response
{
    public bool Success { get; set; }
    public IEnumerable<User> Users { get; set; }
}

public class User 
{
    public int Id { get; set; }
    public string Name { get; set; }
}

そしてちょうど:

Response response = new Response();
response.Success = true;
// populate the rest of the data

return Json(response);

これには、成功ステータスやエラー メッセージなどの共通データがある場合に、すべての応答に基本クラスを使用できるという利点もあります。

public class ResponseBase
{
    public bool Success { get; set; }
    public string Message { get; set; }
}

public class UserResponse : ResponseBase
{ 
    IENumerable<User> Users { get; set }
}

ここで、エラーが発生した場合:

return Json(new ResponseBase() { Success = false, Message = "your error" });

またはそれが成功した場合

return Json(new UserResponse() { Success = true, Users = users });

JSON を手動で作成する場合は、次のようにします。

return Json(new { success = true, users = new[] { new { id = 1, Name = "Alice"}, new { id = 2, Name = "Bob"} } });
于 2012-11-01T19:02:22.263 に答える
1

C#で

return Json(new
    {
        success = true,
        users = new[]
            {
                new {id = 1, FileName = "Text22"}, new {id = 2, FileName = "Text23"}
            }
    }, JsonRequestBehavior.AllowGet);

戻り値

{"success":true,"users":[{"id":1,"FileName":"Text22"},{"id":2,"FileName":"Text23"}]}

于 2012-11-01T19:00:47.240 に答える