2010-09-15 6 views
1

J'ai une application ASP.net MVC qui obtient des coordonnées de marqueur à partir d'une base de données (j'utilise ActiveRecord) et les affiche en tant que json pour être utilisé dans google maps. Le format n'est cependant pas tout à fait correct. Est-ce que quelqu'un sait comment je peux changer la sortie?Changement de sortie JSON ASP.net MVC

Actuellement, la sortie est:

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

Il devrait être:

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

Le code du contrôleur:

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

Et comment je communiquer avec le db:

[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; } 
     } 

Répondre

1

Cela devrait faire le travail:

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

Avant de retourner les emplacements, vous attribuez à la propriété Emplacements d'un type anonyme. Cela entraînera JsonResult à formater la sortie comme vous le souhaitez.

+0

Merci c'est fait :) – Prd