2010-09-15 4 views
1

У меня есть приложение ASP.net MVC, которое получает координаты маркера из базы данных (я использую ActiveRecord) и выводит их как json для использования на картах google. Формат, однако, не совсем прав. Кто-нибудь знает, как я могу изменить выход?Изменение Json вывода ASP.net MVC

В настоящее время выход:

[ 
    { 
     "Id": 1, 
     "Name": null, 
     "Location": "13.79194402, 100.71588015" 
    }, 
    { 
     "Id": 2, 
     "Name": null, 
     "Location": "13.79194402, 100.71588015", 
... 

Оно должно быть:

{ 
"locations": [ 
    { 
     "Id": 1, 
     "Name": null, 
     "Location": "13.79194402, 100.71588015" 
    }, 
    { 
     "Id": 2, 
     "Name": null, 
     "Location": "13.79194402, 100.71588015", 
... 

Код контроллера:

public ActionResult Map() 
    { 
     var map = DeviceLocation.FindAll(); 
     return Json(map, JsonRequestBehavior.AllowGet); 
    } 

И как я общаюсь с БД:

[ActiveRecord("Location")] 
    public class DeviceLocation : ActiveRecordValidationBase<DeviceLocation> 
    { 
     private int _id; 
     private string _name; 
     private string _location; 

     [PrimaryKey("Id")] 
     public int Id 
     { 
      get { return _id; } 
      set { _id = value; } 
     } 

     [Property("Name")] 
     public string Name 
     { 
      get { return _name; } 
      set { _name = value; } 
     } 

     [Property("Coords")] 
     public string Location 
     { 
      get { return _location; } 
      set { _location = value; } 
     } 

ответ

1

Это должно сделать работу:

public ActionResult Map() 
{ 
    var map = DeviceLocation.FindAll(); 
    var locations = new { Locations = map }; 
    return Json(locations, JsonRequestBehavior.AllowGet); 
} 

Перед возвращением места, присвоить его свойству Locations анонимного типа. Это заставит JsonResult форматировать выход так, как вы этого хотите.

+0

Спасибо, что сделал :) – Prd