在C#中将JSON变量转换为小写

5
我正在使用JSONPEncoderFactory、JSONPBehavior解决方案来启用WCF中的JSONP。一切都很好,它已经设置好并且正常工作,我的服务正确返回数据,没有问题。
然而,由于JS中使用方式的原因,我需要把JSON变量名强制转换为小写,这是我目前还没有解决的问题。
以下是我的服务输出示例(变量名称和值已更改为benign elements)。
{"Animals":["dog","cat","mouse"],"Owner":"Greg","Permanent":"y","ID":1,"DaysToStay":"1"}

很简单吧?我想把“Animals”改为“animals”,以此类推...

这需要使用JSON解析器吗,还是只需使用正则表达式即可?如果有人能告诉我他们是如何完成的,我将不胜感激。

谢谢!


2
你是否正在使用基于DataContract的序列化?如果是,你可以在属性上加上[DataMember("animals")]等装饰。 - Charles Prakash Dasari
如果您正在使用C#生成此内容,您可以在字符串上使用.ToLower() - ChrisF
1个回答

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

编辑: 在C#中将json字符串反序列化为字典:

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

复杂字段将被反序列化为字典。因此,您需要一个递归函数来检查实例化的字典。

谢谢您的回复,但这似乎是一个JavaScript函数。我真正想找的是在服务返回JSON之前,在ASP.NET中完成此操作的方法。 - sidogg
在C#中,您可以将JSON字符串反序列化为字典。遍历它,然后使用小写键构建一个新的字典。 - Adilson de Almeida Jr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接