2016-01-11 30 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

感謝你的回答:)。現在一切正常,但我仍然會檢查異常情況。關於我粘貼的剪貼,只是爲了展示這個想法。 再次感謝:) –