任何人都知道以下代码是什么类型的JSON(如果是这样!)?我正在从网站的HTML中检索这个。我正在尝试使用JSON解析器在C#中解析它,但我必须进行大量的预备编辑,根据JSONLint将其格式化为“有效”JSON。例如,变量的名称应该都有双引号而不是没有引号。
{
status: 'A',
displayed: 'Y',
start_time: '2010-11-2600: 00: 00',
start_time_xls: {
en: '26thofNov201000: 00am',
es: '26Nov201000: 00am'
},
suspend_at: '2010-11-2619: 57: 59',
is_off: 'Y',
score_home: '',
score_away: '',
bids_status: '',
period_id: '',
curr_period_start_time: '',
score_extra_info: '',
ev_id: 2257335,
blurb: '',
last_mkts_of_day: false,
follow_hcap_mkt: 10999896
}
这将始终具有相同的格式,我很乐意直接将其解析为C#或java中的对象。
答案 0 :(得分:4)
您可以使用Json.Net来解析输入字符串。你甚至可以在this extension class的帮助下使用dynamic
,如下所示(用你的字符串测试)
dynamic obj = JsonUtils.JsonObject.GetDynamicJsonObject(jsonstr);
Console.WriteLine(obj.names.en);
Console.WriteLine(obj.status);
Console.WriteLine(obj.start_time_xls.en);
Console.WriteLine(obj.suspend_at);
使用纯Json.Net
JObject jObj = (JObject)JsonConvert.DeserializeObject(json3);
Console.WriteLine(jObj["names"]["en"]);
Console.WriteLine(jObj["status"]);
Console.WriteLine(jObj["start_time_xls"]["en"]);
Console.WriteLine(jObj["suspend_at"]);
答案 1 :(得分:1)
JSON要求所有名称都是双引号,因此这不是有效的JSON。这是一个有效的Javascript对象。有关JSON格式的问题请访问:http://json.org/
您想要将此转换为JSON的位置并不完全清楚,但在Javascript中,您可以使用window.JSON.stringify
将其转换为JSON。
演示:http://jsfiddle.net/ThinkingStiff/3xZD8/
var object = {
names: {
en: 'VirtualMarket-2MinuteLevel',
es: 'VirtualMarket-2MinuteLevel'
},
status: 'A',
displayed: 'Y',
start_time: '2010-11-2600: 00: 00',
start_time_xls: {
en: '26thofNov201000: 00am',
es: '26Nov201000: 00am'
},
suspend_at: '2010-11-2619: 57: 59',
is_off: 'Y',
score_home: '',
score_away: '',
bids_status: '',
period_id: '',
curr_period_start_time: '',
score_extra_info: '',
ev_id: 2257335,
blurb: '',
last_mkts_of_day: false,
follow_hcap_mkt: 10999896
},
json = window.JSON.stringify( object );
答案 2 :(得分:1)
是否(我投票“不是”)它是有效的:
s {^\s*([a-z0-9_]+)\:} {"\1":} g
似乎适用于这个数据集,我敢打赌他们只是strcat
输出你,所以它暂时可能是安全的。