我试图反序化这个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;
我做错了什么?
答案 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[^\[]+(.*}\])