【问题标题】:Converting JSON variables to lowercase in C#在 C# 中将 JSON 变量转换为小写
【发布时间】:2011-09-04 17:45:59
【问题描述】:

我正在使用 JSONPEncoderFactory,JSONPBehavior 解决方案在 WCF 中启用 JSONP。没关系,一切都设置好并且运行良好,我的服务正确返回数据,没有问题。

但是,由于它们在 JS 中的使用方式,我需要能够将 JSON 变量名称强制为小写,这是我目前还无法弄清楚的。

这是我的服务输出的示例(此示例的变量名称和值已更改为良性元素)

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

很简单吧?我希望“动物”成为“动物”,依此类推......

我需要为此使用 json 解析器,还是仅仅使用正则表达式就足够简单了?如果有人能告诉我他们以前是如何做到的,我将不胜感激。

谢谢!

【问题讨论】:

  • 您是否使用基于 DataContract 的序列化?如果是这样,您可以使用 [DataMember("animals")] 等来装饰您的财产。
  • 如果你在 C# 中生成这个,你可以在字符串上使用.ToLower()

标签: c# javascript asp.net wcf json


【解决方案1】:

你可以在 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);

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

【讨论】:

  • 感谢您的回复,但这看起来像是一个 JavaScript 函数。我真的在寻找一种在 ASP.NET 中执行此操作的方法,就在流从服务作为 JSON 返回之前。
  • 在 C# 中,您可以在字典中反序列化您的 json 字符串。遍历它,然后用小写的键构建一个新字典。
猜你喜欢
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多