2016-01-11 28 views
1

伙计们我有一个很大的麻烦,试图用c#序列化as3文件到json。Json双引号搞砸了C#

现在,我无意中发现了这个=>

"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键。

但在某些类中,键中缺少双引号。 任何简单的方法来正确添加它们?

在此先感谢

回答

1
  1. 如果属性中没有报价,那么你真的不能称之为JSON。

  2. 根据这一site,在所有的标准,除了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,$和_字符在其中。

+0

也许正则表达式也需要一些思考。希望这可以设置你通往成功的途径:) –

+0

感谢你的回答:)。现在一切正常,但我仍然会检查异常情况。关于我粘贴的剪贴,只是为了展示这个想法。 再次感谢:) –