Parsing Non-standard Json
Anyone know what type of JSON (if even that!) the following code is? I'm retrieving this from the HTML of a website. I'm trying to parse it in C# with a JSON parser, but I'm having
Solution 1:
You can use Json.Net to parse your input string. You can even make use of dynamic
as below with the help of this extension class (Tested with your string)
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);
With pure Json.Net
JObjectjObj= (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"]);
Solution 2:
JSON requires that all names be in double quotes, so this is not valid JSON. This is a valid Javascript object. For JSON format questions go here: http://json.org/
It's not totally clear where you want to do this conversion to JSON, but in Javascript you can use window.JSON.stringify
to convert it to JSON.
Demo: 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 );
Solution 3:
Whether or not (I vote “not”) it's valid:
- Read in the string;
s {^\s*([a-z0-9_]+)\:} {"\1":} g
seems to work for this data set, and I'll bet that they're just strcat
ting the output at you, so it's probably safe for the time being.
Post a Comment for "Parsing Non-standard Json"