Json双引号把C#搞砸了

本文关键字:Json | 更新日期: 2023-09-27 18:29:49

伙计们,我很头疼用C#将as3文件序列化为json。

现在我偶然发现了这个=>

"licvarreelVideosConfig":[{
    url: "ChoiceSlot2/GEOLJSlot/videos/00.flv",
    width: 224,
    height: 224,
    onWholeReel: false,
    transparent: true
}, {
    url:"ChoiceSlot2/GEOLJSlot/videos/01.flv",
    width: 224,
    height: 224,
    onWholeReel: false,
    transparent: true
}]

比方说,我根据as3文件中给出的内容生成json密钥。

但在某些类中,键中缺少双引号。有什么简单的方法可以正确添加它们吗?

提前感谢

Json双引号把C#搞砸了

  1. 如果属性没有被引用,那么您就不能真正调用这个JSON。

  2. 根据该网站的说法,在所有标准中,除了RFC 7159,整个内容都必须封装在{}中

  3. 抛开这些不谈,我想到的一个快速解决方案是使用正则表达式将未加引号的属性名替换为带引号的属性名称。

示例

var unquotedJson = "'"licvarreelVideosConfig'":[{" +
                        "url: '"ChoiceSlot2/GEOLJSlot/videos/00.flv'"," +
                        "width: 224," +
                        "height: 224," +
                        "onWholeReel: false," +
                        "transparent: true" +
                    "}, {" +
                        "url:'"ChoiceSlot2/GEOLJSlot/videos/01.flv'"," +
                        "width: 224," +
                        "height: 224," +
                        "onWholeReel: false," +
                        "transparent: true" +
                    "}]";
var quotedJson = new Regex("([a-zA-Z0-9_$]+?):(.*?)[,]{0,1}").Replace(unquotedJson, "'"$1'":$2");
// if the serializer needs nested { ... }
// var nestedQuotedJson = string.Format("{{{0}}}", quotedJson);
// do the serialization

注意,这实际上并不全面,它只支持包含a-z、a-z、0-9、$和_字符的属性名。