2011-09-04 10 views
5

Estoy utilizando la solución JSONPBehavior de JSONPEncoderFactory para habilitar JSONP en WCF. Está todo bien, está todo listo y funciona bien, mi servicio devuelve los datos correctamente, no hay problemas allí.Conversión de variables JSON a minúsculas en C#

Sin embargo, necesito poder forzar los nombres de las variables JSON en minúsculas debido a la forma en que se usan en JS, y esto es algo que todavía no he podido descifrar.

Aquí es un ejemplo de mi producción de servicios (los nombres y valores de las variables se han cambiado a los elementos benignos para este ejemplo)

{"Animals":["dog","cat","mouse"],"Owner":"Greg","Permanent":"y","ID":1,"DaysToStay":"1"} 

Bastante simple ¿verdad? Quiero que los "Animales" sean "animales", y así sucesivamente ...

¿Necesito usar un analizador json para esto, o es bastante fácil simplemente usar una expresión regular? Estaría agradecido si alguien pudiera decirme cómo lo han hecho antes.

Gracias!

+2

¿Está utilizando la serialización basada en DataContract? Si es así, puede decorar su propiedad con [DataMember ("animals")] etc. –

+0

Si está generando esto en C#, puede usar '.ToLower()' en la cadena. – ChrisF

Respuesta

2

Se puede utilizar esta función en JavaScript:

FN = function (obj) 
{ 
    var ret = null; 
    if (typeof(obj) == "string" || typeof(obj) == "number") 
     return obj; 
    else if (obj.push) 
     ret = []; 
    else 
     ret = {}; 

    for (var key in obj) 
     ret[String(key).toLowerCase()] = FN(obj[key]); 
    return ret; 
}; 

EDIT: Deserialize una cadena JSON en un diccionario con C#:

using System.Web.Script.Serialization; 
var serializer = new JavaScriptSerializer(); 
var dic = serializer.Deserialize<Dictionary<string,dynamic>>(yourJSONString); 

Los campos complejos serán deserializan en diccionario. Por lo tanto, necesitará una función recursiva para inspeccionar el dic matherializado.

+0

Gracias por la respuesta, pero esto parece una función de JavaScript. Realmente estoy buscando una forma de hacerlo en ASP.NET justo antes de que la transmisión sea devuelta por el servicio como JSON. – sidogg

+0

En C# puede deserializar su cadena json en un diccionario. Iteramos sobre él y luego construimos un nuevo diccionario con sus llaves en minúsculas. –

Cuestiones relacionadas