解析不正确JSON字符串
问题描述:
我JSON输入,其中包含这样解析不正确JSON字符串
[13806008,,[[27017723,,[0.25,-180,145],],[26683222,,[0,-125,106],]],0,"0","0","0","0",null,[[176,"673041"],[168,"2"],[175,"val"],[169,"1"]]]
的Chrome Web检查数组分析这些双逗号一样不确定的因素,但Newtonsoft JSON库投用这种格式异常。
我看到的唯一方法 - 先在双逗号之间插入null,然后再解析字符串。
有没有更快的方法来解析这样的JSON字符串?
答
仔细看看我的字符串,我意识到那是常规的JSON数组! 我只是解析我的蜇作为JSON数组!
JArray JsonArray= JArray.Parse(responseString);
答
正如Darin Dimitrov在评论中所说,这不是JSON。因此,你需要弄清楚你想如何干预它。从这个例子看,它看起来像JSON的一个非常简单的“子集”,所以这就是我的建议。
我写了一个名为canto34库,它可以让你写你自己的口译像这样简单的语言问题,并说明程序以识别标记的嵌套列表 - 在我的情况,口齿不清s表达式,但这些都是非常类似于嵌套的JavaScript列表,只是使用不同的括号。 ;)
下面是解析嵌套列表所需的结构类型;
public class SExpressionParser : ParserBase
{
internal dynamic SExpression()
{
if (LA1.Is(SExpressionLexer.OP))
{
Match(SExpressionLexer.OP);
}
else
{
var atom = Match(SExpressionLexer.ATOM).Content;
return atom;
}
var array = new List<dynamic>();
while (!EOF && !LA1.Is(SExpressionLexer.CL))
{
array.Add(SExpression());
}
Match(SExpressionLexer.CL);
return array;
}
}
可能重复的[如果忽略类中的属性,如果null,使用json.net](http://*.com/questions/6507889/how-to-ignore-a-property-in- class-if-null-using-json-net) – techspider
'我对输入有JSON - >恐怕你没有字符串JSON作为输入。 JSON具有非常严格的架构。你有什么是不符合任何有效的JSON模式的字符串。因此,如果您将这种无效字符串作为输入引发,那么标准JSON序列化程序会发出抱怨,这很正常。如果你有一些不符合任何规范或RFC的随机字符串,你可能需要编写自定义代码来解析它,这取决于它的语法。如果您没有有效的JSON输入,只需忘记使用像Newtonsoft.JSON库这样的JSON序列化程序。 –