因此,JSON文件的一部分,是这样的:
{
"number":"23",
"name":{
"":"LJames" <----------- look at this line
},
"Gender":"Male",
...
我试图解析这个,只要姓名字段有(没有名字与之相匹配的值), DataContractJsonSerializer
将无法读取它。
任何人有这样的JSON文件请分享一些想法的经验,谢谢。
因此,JSON文件的一部分,是这样的:
{
"number":"23",
"name":{
"":"LJames" <----------- look at this line
},
"Gender":"Male",
...
我试图解析这个,只要姓名字段有(没有名字与之相匹配的值), DataContractJsonSerializer
将无法读取它。
任何人有这样的JSON文件请分享一些想法的经验,谢谢。
你可以尝试使用Json.NET解析它。 它一般的作品比DataContractJsonSerializer好了很多,具有更好的性能。 我不知道,如果这样做虽然解决您的问题。
如果你仔细想想,就会生成的目标看起来像在C#是什么? 从JSON字符串像这样...
{
"name" : { "first" : "James" }
}
......我希望映射到C#对象与“名”属性,而“名”属性将引用的对象与“第一”属性(这将是一个字符串,“詹姆斯”的值) 。
所以,如果你删除键值“第一”,怎么会解析器知道如何映射(或如何命名)的财产? 有在C#中的无名财产没有这样的事情。
我会建议重新格式化JSON文件(如果可能)看起来像这样:
{
"number":"23",
"name": "LJames",
"Gender":"Male",
...
使用正则表达式与您所选择的变量名来代替这个空报价,例如:
json = Regex.Replace(json , "\"\":", "\"playerName\":", RegexOptions.IgnorePatternWhitespace);
有一个叫库杨松为C
和C++
。 我不熟悉C#
但没有任何理由为它也不在那里工作。 但是,如果你想自己创建一个解析器,我想告诉你,写一个正则表达式作为DELIM:比如String delim = "{} :\n\t"
; 解析器基本上是:如果:
就行了,然后检索值作为key
: value
对,如果{
不停地进行分析,直到}
中找到。 我怀疑你会有什么麻烦写出这样的解析器。