C#解析JSON文件没有名字(C# Parsing Json File with no name)

2019-09-19 03:54发布

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

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

我试图解析这个,只要姓名字段有(没有名字与之相匹配的值), DataContractJsonSerializer将无法读取它。

任何人有这样的JSON文件请分享一些想法的经验,谢谢。

Answer 1:

你可以尝试使用Json.NET解析它。 它一般的作品比DataContractJsonSerializer好了很多,具有更好的性能。 我不知道,如果这样做虽然解决您的问题。

如果你仔细想想,就会生成的目标看起来像在C#是什么? 从JSON字符串像这样...

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

......我希望映射到C#对象与“名”属性,而“名”属性将引用的对象与“第一”属性(这将是一个字符串,“詹姆斯”的值) 。

所以,如果你删除键值“第一”,怎么会解析器知道如何映射(或如何命名)的财产? 有在C#中的无名财产没有这样的事情。

我会建议重新格式化JSON文件(如果可能)看起来像这样:

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


Answer 2:

使用正则表达式与您所选择的变量名来代替这个空报价,例如:

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


Answer 3:

有一个叫库杨松为CC++ 。 我不熟悉C#但没有任何理由为它也不在那里工作。 但是,如果你想自己创建一个解析器,我想告诉你,写一个正则表达式作为DELIM:比如String delim = "{} :\n\t" ; 解析器基本上是:如果:就行了,然后检索值作为keyvalue对,如果{不停地进行分析,直到}中找到。 我怀疑你会有什么麻烦写出这样的解析器。



文章来源: C# Parsing Json File with no name