<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    使用ruby解析json

    Posted on 2007-02-06 13:04 dennis 閱讀(4685) 評論(1)  編輯  收藏 所屬分類: 動態語言
    rails1.1已經加入對json的全面支持,現在的Array,Hash,String,Object...等等都有一個to_json方法,生成 json字符串。反過來,我們該如何解析json呢?查了下http://www.json.org/上面ruby語言的鏈接,在rubyforge上找到了一個項目。解析json對ruby來說非常簡單,只要一行代碼:



    例子:
    json?=?'["a",?"B",?"C"]'
    ?
    puts?"Unsafe?#{unsafe_json(json).inspect}"???#輸出Unsafe?["a",?"B",?"C"]






    把上面的json字符串解析成Array。這樣的方法并不安全,比如:
    json?=?'puts?"Danger?Will?Robinson"'
    ? puts?"Unsafe?#{unsafe_json(json).inspect}"?







    又該輸出什么呢?很遺憾,解析不出什么東西,跳出一個警告:
    warning: character class has `[' without escape


    安全的方法如下:
    module?SafeJSON
    ??require?
    'monitor'
    ??def?SafeJSON.build_safe_json
    ????ret?
    =?nil
    ????waiter?
    =?''
    ????waiter.extend(MonitorMixin)
    ????wait_cond?
    =?waiter.new_cond
    ????
    ????Thread.start?
    do
    ??????$SAFE?
    =?4
    ??????ret?
    =?Proc.new?{|json|
    ????????eval(json.gsub(
    /(["'])/s*:/s*(['"0-9tfn/[{])/){"#{$1}=>#{$2}"})
    ??????}

    ??????waiter.synchronize?
    do
    ????????wait_cond.signal
    ??????end
    ????end
    ????waiter.synchronize?
    do
    ??????wait_cond.wait_while?
    {?ret.nil??}
    ????end
    ????
    return?ret
    ??end
    ??@@parser?
    =?SafeJSON.build_safe_json
    ??
    ??#?Safely?parse?the?JSON?input
    ??def?SafeJSON.parse(input)
    ????@@parser.call(input)
    ??rescue?SecurityError
    ????
    return?nil
    ??end
    end






    包含這個Module,你就可以這樣使用:
    peoples=SafeJSON.parse('{"peoples":[{"name":"site120","email":"site120@163.com","sex":"男"},{"name":"site120_2","email":"site120@163.com_2","sex":"男_2"}]}')

    puts?peoples[
    "peoples"][1]["name"]??#輸出site120_2







    rails通過RJS內置了對AJAX的支持,也許用到json的機會并不多,不過作為一種數據交換的方便格式,還是值的注意。

    評論

    # 我草  回復  更多評論   

    2010-10-26 22:34 by mouse
    aaaaa
    主站蜘蛛池模板: 中文日韩亚洲欧美制服| 伊人久久综在合线亚洲91| 久久精品国产亚洲AV麻豆~| 国产大片免费天天看| 亚洲日本中文字幕天堂网| 免费VA在线观看无码| 日批日出水久久亚洲精品tv| 婷婷亚洲综合五月天小说在线| 免费国产真实迷j在线观看| 激情婷婷成人亚洲综合| 亚洲精品第一国产综合精品99| 中美日韩在线网免费毛片视频 | 免费羞羞视频网站| 亚洲精品动漫免费二区| 免费v片在线观看无遮挡| 全黄A免费一级毛片| 亚洲人成无码网站| 免费A级毛片无码A∨中文字幕下载| 久久精品国产亚洲AV无码娇色| 国产精品怡红院永久免费| 亚洲 欧洲 视频 伦小说| 国产gav成人免费播放视频| 中文字幕免费在线看线人动作大片| 久久亚洲精品视频| 免费阿v网站在线观看g| 国产成人亚洲精品91专区高清| 久久久青草青青国产亚洲免观| 久久久久久AV无码免费网站下载| 亚洲免费在线观看视频| 日韩精品电影一区亚洲| 久久久免费精品re6| 国产成人人综合亚洲欧美丁香花| 久久国产成人亚洲精品影院| 人妻无码久久一区二区三区免费| 亚洲色无码国产精品网站可下载| 亚洲视频在线精品| 在线观看无码AV网站永久免费| 免费的黄色的网站| 亚洲大香伊人蕉在人依线| 一级毛片直播亚洲| 日本免费一区二区在线观看|