2011-09-04 15 views
5

Sto utilizzando la soluzione JSONPEncoderFactory, JSONPBehavior per abilitare JSONP in WCF. Va tutto bene, è tutto configurato e funziona bene, il mio servizio restituisce correttamente i dati, senza problemi.Conversione di variabili JSON in lettere minuscole in C#

Tuttavia, ho bisogno di essere in grado di forzare i nomi delle variabili JSON in lettere minuscole a causa del modo in cui vengono utilizzati in JS, e questo è qualcosa che non sono stato ancora in grado di capire.

Ecco un esempio della mia uscita di servizio (i nomi ei valori delle variabili sono stati modificati ad elementi benigni per questo esempio)

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

Abbastanza semplice giusto? Voglio che gli "Animali" siano "animali", e così via ...

Devo usare un parser JSON per questo, o è abbastanza semplice usare solo un'espressione regolare? Sarei grato se qualcuno potesse farmi sapere come l'hanno fatto prima.

Grazie!

+2

Si sta utilizzando la serializzazione basata su DataContract? Se è così, puoi decorare la tua proprietà con [DataMember ("animals")] ecc. –

+0

Se stai generando questo in C# puoi usare '.ToLower()' sulla stringa. – ChrisF

risposta

2

È possibile utilizzare questa funzione 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: deserializzare una stringa JSON in un dizionario con C#:

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

I campi complessi saranno deserializzare in dizionario. Quindi annuncerai una funzione ricorsiva per ispezionare il dic matherializzato.

+0

Grazie per la risposta, ma questa sembra una funzione JavaScript. Sto davvero cercando un modo per farlo in ASP.NET appena prima che lo stream venga restituito dal servizio come JSON. – sidogg

+0

In C# è possibile desserializzare la stringa json in un dizionario. Scollegalo e quindi, crea un nuovo dizionario con le tue chiavi in ​​minuscolo. –

Problemi correlati