Parsing non-standard JSON

前端 未结 3 1994
南旧
南旧 2020-12-21 13:58

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

相关标签:
3条回答
  • 2020-12-21 14:46

    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 strcatting the output at you, so it's probably safe for the time being.

    0 讨论(0)
  • 2020-12-21 14:48

    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

    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"]);
    
    0 讨论(0)
  • 2020-12-21 14:56

    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 );
    
    0 讨论(0)
提交回复
热议问题