簡體   English   中英

解析非標准JSON

[英]Parsing non-standard JSON

任何人都知道以下代碼是什么類型的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對象。

您可以使用Json.Net來解析您的輸入字符串。 您甚至可以在此擴展類的幫助下利用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"]);

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 );

(我投反對票)是否有效:

  • 讀入字符串;
  • s {^\\s*([a-z0-9_]+)\\:} {"\\1":} g

似乎對這個數據集工作,我敢打賭,他們只是strcat鈴聲在你的輸出,因此它可能是暫時安全。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM