Json双引号搞砸了C#
Posted
技术标签:
【中文标题】Json双引号搞砸了C#【英文标题】:Json double quote messed up C# 【发布时间】:2016-04-16 10:17:46 【问题描述】:伙计们,我在尝试使用 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 密钥。
但在某些类中,键中缺少双引号。 有什么简单的方法可以正确添加它们吗?
提前致谢
【问题讨论】:
【参考方案1】:如果属性没有被引用,那么你就不能真正调用这个 JSON。
根据site,在所有标准中,除了 RFC 7159,整个内容都必须包装在
撇开这些不谈,我想到的一个快速解决方案是使用正则表达式将不带引号的属性名称替换为带引号的属性名称。
例子
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、$、_字符的属性名。
【讨论】:
可能正则表达式也需要一些思考。希望这可以让你走上成功之路:) 感谢您的回答 :)。现在一切正常,但我仍然会检查异常。关于我粘贴的剪辑,它只是为了展示这个想法。再次感谢:)以上是关于Json双引号搞砸了C#的主要内容,如果未能解决你的问题,请参考以下文章
C#调用接口返回json数据中含有双引号 或其他非法字符的解决办法