繁体   English   中英

C#解析没有名称的Json文件

[英]C# Parsing Json File with no name

因此,Json文件的一部分是这样的:

{
"number":"23",
"name":{
    "":"LJames"   <----------- look at this line
},
"Gender":"Male",
...

我正在尝试对此进行解析,并且只要存在名称字段(名称与值不匹配), DataContractJsonSerializer将无法读取它。

任何有使用这种Json文件的经验的人,请分享一些想法,谢谢。

您可以尝试使用Json.NET进行解析。 它通常比DataContractJsonSerializer更好,并且具有更好的性能。 我不确定这是否可以解决您的问题。

如果您考虑一下,在C#中生成的对象将是什么样? 从这样的JSON字符串...

{
     "name" : { "first" : "James" }
}

...我希望映射到具有“名称”属性的C#对象,并且该“名称”属性将引用具有“第一”属性(将是字符串,值为“ James”)的对象。

因此,如果删除键值“ first”,解析器将如何知道如何映射(或命名)该属性? C#中没有所谓的无名属性。

我建议重新格式化您的Json文件(如果可能),如下所示:

{
    "number":"23",
    "name": "LJames",
    "Gender":"Male",
    ...

使用正则表达式将此空引号替换为您选择的变量名,例如:

  json = Regex.Replace(json , "\"\":", "\"playerName\":", RegexOptions.IgnorePatternWhitespace);

有一个名为janssonCC++ 我对C#不熟悉,但也没有理由在这里不起作用。 但是,如果您想自己创建一个解析器,我会告诉您,将正则表达式写为您的delim:例如String delim = "{} :\\n\\t" ; 您的解析器基本上是:如果在行上,如果: ,则找到值作为keyvalue对,如果找到{继续解析直到} 我怀疑您编写这样的解析器会遇到麻烦。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM