Creación de múltiples objetos JSON con el servicio web ASP.NET

Aquí hay dos preguntas relacionadas con JSON del servicio web ASP.NET. Estoy usando una aplicación ASP.NET 2.0 diseñada en N niveles.


Pregunta 1:
Estoy tratando de hacer que mi servicio web ASP.NET genere una respuesta JSON de múltiples objetos donde cada objeto tiene múltiples objetos devueltos. No estoy seguro de si lo estoy explicando correctamente, así que aquí hay un ejemplo de lo que estoy buscando.

[
    {"id":1, "CommentDataElement": "Value",
        "OldData":{ "Description": "ABC", "Status": "0" },
        "NewData":{ "ShortText": "Text here", "LongText": "More text here" }
    },
    {"id":2, "CommentDataElement": "Value",
        "OldData":{ "Description": "DEF", "Status": "1" },
        "NewData":{ "ShortText": "Text here", "LongText": "More text here" }
    },
    {"id":3, "CommentDataElement": "Value",
        "OldData":{ "Description": "GHI", "Status": "2" }
    },
    {"id":4, "CommentDataElement": "Value",
        "NewData":{ "ShortText": "Text here", "LongText": "More text here" }
    }
]

id's 1 y 2 tienen ambos Old y New conjuntos de datos, mientras que id 3 solo tiene Old conjunto de datos y id 4 solo tiene New conjunto de datos

Luego usaría jQuery para manejar esta respuesta. Y en base a la existencia de la Old y New conjuntos de datos, generaría los elementos de página adecuados.

La fuente de la OldData y NewData están en dos tablas diferentes. Entonces, ¿es esto posible de hacer?


Pregunta 2:
Además, ¿es posible que un servicio web ASP.NET devuelva una cadena JSON con dos estructuras de objetos diferentes? Ejemplo.

[
    {...same as above, just cut out for brevity...}
    {"id":4, "CommentDataElement": "Value",
        "NewData":{ "ShortText": "Text here", "LongText": "More text here" }
    },
    {"Count":"100"}
]

Básicamente, lo que quiero hacer es realizar una solicitud al servidor, obtener mi conjunto de datos truncado (basado en la paginación, digamos que solo devuelve 20 registros del conjunto completo) y obtener el recuento completo del conjunto de registros para poder generar mis números de página ( paginación). En mi capa de acceso a datos, ¿es posible usar una declaración de devolución para el conjunto de registros y una OUTPUT parámetro para el conteo completo? Solo un pensamiento.


Estoy bastante seguro de que el JSON que he escrito aquí no es correcto. Por favor, siéntase libre de actualizar como mejor le parezca. ¡Cualquier ayuda es apreciada! ¡Gracias!

preguntado el 03 de mayo de 12 a las 22:05

1 Respuestas

Pude resolver este problema.

Básicamente, crea la clase, luego crea la clase como una lista. Por ejemplo...

public class OldData
{
    private string _Description = string.empty;
    private string _Status = string.empty;

    public string Description { get {return _Description;} set {_Description = value; } }
    public string Status { get {return _Status;} set {_Status = value; } }
}

public class NewData
{
    private string _ShortText = string.empty;
    private string _LongText = string.empty;

    public string ShortText { get {return _ShortText;} set {_ShortText = value; } }
    public string LongText { get {return _LongText;} set {_LongText = value; } }
}

public class Results
{
    private int? _ID = null;
    private OldData _od = null;
    private NewData _nd = null;

    public int? ID { get {return _ID;} set {_ID = value; } }
    public OldData od { get {return _od;} set {_od = value; } }
    public NewData nd { get {return _nd;} set {_nd = value; } }
}

public class Results_List : List<Results>
{
    public Results_List() { }
}

Luego puede crear una instancia de la clase y llenarla con datos de su base de datos. La respuesta JSON tiene el formato adecuado para la lógica del lado del cliente. Esperemos que esto ayude a alguien más. ¡Disfrutar!

contestado el 29 de mayo de 12 a las 16:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.