不能用Newtonsoft解析json

时间:2018-04-24 13:55:42

标签: c# regex json.net

我试图反序化这个json:

{"name":"FC Internazionale Milano","y":55},{"name":"AC Chievo Verona","y":45,"sliced":true}

在字符串中包含的函数内可用:

window.addEvent('domready', function() {
var chart = new PieChart('Possession');
     chart.addSeries('Possession', [{"name":"FC Internazionale Milano","y":55},{"name":"AC Chievo Verona","y":45,"sliced":true}]);

chart.highChartsOptions.plotOptions.pie.topmargin = '20';
chart.highChartsOptions.plotOptions.pie.size = "80%";
chart.highChartsOptions.plotOptions.pie.center = ['50%', '55%'];
    chart.render('page_chart_1_chart_statsplus_1_chart_possession_1-wrapper');

});

对于get json我使用了这个正则表达式:

System.Text.RegularExpressions.Regex.Match(script, @"Possession[^\{]+(.*})").Groups[1].Value;

返回上面的json。所以我以这种方式反序列化:

var json = JsonConvert.DeserializeObject<JsonMatchStat>(jsonStr);

JsonMatchStat的结构是这样的:

 public class JsonMatchStat
 {
    public string name { get; set; }
    public int y { get; set; }
    public bool? sliced { get; set; }
 }

当我反序列化json时,我得到了:

  

&#39;完成阅读JSON内容后遇到的其他文字:,。路径&#39;&#39;,第1行,第42位。&#39;

我做错了什么?

1 个答案:

答案 0 :(得分:-1)

您提取的JSON无效,它是用逗号拼接的多个JSON对象。问题是你遗漏了周围的dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' implementation 'com.android.support:design:26.1.0' ... implementation "com.google.android.gms:play-services-vision:15.0.0" ... } [括号,表明JSON是一个数组。所以相反,如果你有正则表达式包含它们(注意:我不是正则表达式专家,但这应该有效):

]

现在您可以反序列化为可枚举:

Possession[^\[]+(.*}\])