2011-09-04 84 views
5

我正在使用JSONPEncoderFactory,JSONPBehavior解决方案在WCF中启用JSONP。这很好,它的设置和运行都很好,我的服务能够正确返回数据,没有问题。在C中将JSON变量转换为小写#

不过,我需要能够迫使JSON变量名称为小写,由于他们正在以JS使用的方式,这是我一直无法找出尚未。

这里是我的服务输出的一个例子(变量名和值已更改为良性的元素在这个例子中)

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

很简单吧?我想要的“动物”是“动物”,等等...

我需要使用JSON解析器对于这一点,还是很容易的只是使用正则表达式?如果有人能让我知道他们之前是如何做到这一点的,我将不胜感激。

谢谢!

+2

您是否使用基于DataContract的序列化?如果是这样,你可以用[DataMember(“动物”)]等装饰你的财产。 –

+0

如果你在C#中产生这个,你可以在字符串上使用'.ToLower()'。 – ChrisF

回答

2

您可以在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; 
}; 

编辑: 反序列化JSON字符串的字典与C#:

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

复杂的字段将被反序列化为字典。所以你需要一个递归函数来检查数组化的dic。

+0

感谢您的回应,但这看起来像一个JavaScript函数。我真的正在寻找一种方法,在将流从服务作为JSON返回之前在ASP.NET中执行此操作。 – sidogg

+0

在C#中,您可以在Dictionary中解串化您的json字符串。迭代它,然后,用小写字母构建一个新的字典。 –