婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Ruby中嵌套對象轉換成json的方法

Ruby中嵌套對象轉換成json的方法

熱門標簽:外呼線路從哪里出來的 漯河電銷 巫師3地圖標注魔力之所 天津外呼系統怎么收費 淮安自動外呼系統供應商 柯城手機地圖如何做地圖標注 AI電銷機器人 線路 征服者企業地圖標注 中牟外呼系統違法嗎

JSON由于其數據結構簡單便利,已逐漸成為了互聯網上的主流數據交換的數據格式。

在討論嵌套對象(Nested Object)的JSON轉換方法之前,我們先看簡單的ruby JSON轉換。
首先,ruby對象轉換為JSON字符串:

復制代碼 代碼如下:

class Obj1

    def initialize(var1)

        @var1 = var1

    end


    def to_json(*a)

        {

            "json_class" => self.class,

            "data" => {"var1" => @var1}

        }.to_json(*a)

    end


    def self.json_create(json_str)

        new(json_str["data"]["var1"])

    end

end


obj1 = Obj1.new("i am obj1")


#obj1 to JSON string

json_str = obj1.to_json

puts "JSON string of obj1 = #{json_str}"


#JSON string to obj1

obj11 = JSON.parse(json_str)

puts "ob1 from json string = #{obj11.var1}"


上面代碼我們可以看到,ruby與JSON string之間的轉換,關鍵有三個點:

#引入json庫,才能有下面兩個方法,json是通過open class的方式,給Hash對象加上了to_json(*a)方法,關于ruby的open class參考支持Open Class特性的編程語言中的開閉原則(Open-Closed Principle)
1)require ‘json'

#定義對象轉為JSON string的to_json(*a)方法,其實現是使用Hash對象的to_json(*a)方法
2)def to_json(*a)

#定義從JSON string構造對象的json_create方法,此方法是類方法
3)def self.json_create(json_str)

上面三點是Ruby中實現JSON string互相轉換的基本要求。

代碼運行結果為:

復制代碼 代碼如下:

JSON string of obj1 = {"json_class":"Obj1","data":{"var1":"i am obj1"}}

ob1 from json string = i am obj1


現在我們來看嵌套對象的JSON string轉換:

復制代碼 代碼如下:

#!/usr/local/ruby/bin/ruby


require 'json'


class Obj1

    def initialize(var1)

        @var1 = var1

    end


    def to_json(*a)

        {

            "json_class" => self.class,

            "data" => {"var1" => @var1}

        }.to_json(*a)

    end


    def self.json_create(json_str)

        new(json_str["data"]["var1"])

    end


    attr_reader :var1

end


class Obj2

    def initialize(var2)

        @var2 = var2

    end


    def to_json(*a)

        {

            "json_class" => self.class,

            "data" => {"var2" => @var2}

        }.to_json(*a)

    end


    def self.json_create(json_str)

        new(json_str["data"]["var2"])

    end


    attr_reader :var2

end


class Obj

    def initialize(obj1, obj2)

        @obj1 = obj1

        @obj2 = obj2

    end


    def to_json(*a)

        {

            "json_class" => self.class,

            "data" => {"obj1" => @obj1.to_json, "obj2" => @obj2.to_json}

        }.to_json(*a)

    end


    def self.json_create(json_str)

        new(json_str["data"]["obj1"], json_str["data"]["obj2"])

    end


    def to_s

        "Hi, i am obj"

    end


    attr_reader :obj1, :obj2

end


obj1 = Obj1.new("i am obj1")

obj2 = Obj2.new("i am obj2")

obj = Obj.new(obj1,obj2)


obj_json_str = obj.to_json

puts "JSON string of obj = #{obj_json_str}"


obj_1 = JSON.parse(obj_json_str)

puts "obj_1 from json string , obj1.class = #{obj_1.obj1.class}, obj2.class = #{obj_1.obj2.class}"


上面代碼中,嵌套對象我們慣性思維,是先將對象自己轉換為JSON string:

復制代碼 代碼如下:

"data" => {"obj1" => @obj1.to_json, "obj2" => @obj2.to_json}

上面代碼輸出:

復制代碼 代碼如下:

JSON string of obj = {"json_class":"Obj","data":{"obj1":"{\"json_class\":\"Obj1\",\"data\":{\"var1\":\"i am obj1\"}}","obj2":"{\"json_class\":\"Obj2\",\"data\":{\"var2\":\"i am obj2\"}}"}}

obj_1 from json string , obj1.class = String, obj2.class = String

我們注意到,被嵌套的對象轉換為JSON string后,多了一個反斜杠 \ :

復制代碼 代碼如下:

JSON string of obj = {"json_class":"Obj","data":{"obj1":"{\"json_class\":\"Obj1\",\"data\":{\"var1\":\"i am obj1\"}}","obj2":"{\"json_class\":\"Obj2\",\"data\":{\"var2\":\"i am obj2\"}}"}}

且,JSON string轉換后,obj對象中嵌套的對象obj1和obj2,其類型都為String,而不是期望的Obj1和Obj2類型

復制代碼 代碼如下:

obj_1 from json string , obj1.class = String, obj2.class = String

實際上,這里是慣性思維害人,被嵌套的對象,不需要調用其to_json方法。
因此將Obj類的to_json代碼:

復制代碼 代碼如下:

    def to_json(*a)

        {

            "json_class" => self.class,

            "data" => {"obj1" => @obj1.to_json, "obj2" => @obj2.to_json}

        }.to_json(*a)

    end

修正為:

復制代碼 代碼如下:

    def to_json(*a)

        {

            "json_class" => self.class,

            "data" => {"obj1" => @obj1, "obj2" => @obj2}

        }.to_json(*a)

    end

然后,運行代碼,可以看到預期的輸出:

復制代碼 代碼如下:

JSON string of obj = {"json_class":"Obj","data":{"obj1":{"json_class":"Obj1","data":{"var1":"i am obj1"}},"obj2":{"json_class":"Obj2","data":{"var2":"i am obj2"}}}}

obj_1 from json string = {"json_class"=>"Obj", "data"=>{"obj1"=>#, "obj2"=>#}}


您可能感興趣的文章:
  • 使用Ruby來處理JSON的簡單教程
  • Ruby和Ruby on Rails中解析JSON格式數據的實例教程

標簽:內江 甘孜 大慶 南昌 河池 西雙版納 棗莊 克拉瑪依

巨人網絡通訊聲明:本文標題《Ruby中嵌套對象轉換成json的方法》,本文關鍵詞  Ruby,中,嵌套,對象,轉,換成,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ruby中嵌套對象轉換成json的方法》相關的同類信息!
  • 本頁收集關于Ruby中嵌套對象轉換成json的方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美mv日韩mv国产| 午夜欧美大尺度福利影院在线看| 国产精品久久久久aaaa樱花| 久久av老司机精品网站导航| 制服.丝袜.亚洲.另类.中文| 免费美女久久99| 日韩一二在线观看| 精品在线观看免费| 久久九九全国免费| 成人va在线观看| 亚洲乱码日产精品bd| 色呦呦一区二区三区| 亚洲国产另类精品专区| 欧美视频精品在线观看| 亚洲一区二区三区四区五区黄| 欧美性高清videossexo| 日韩精品免费专区| 精品捆绑美女sm三区| 波多野结衣精品在线| 亚洲午夜视频在线| 日韩久久免费av| 成人av网站在线观看免费| 亚洲国产毛片aaaaa无费看| 精品国产不卡一区二区三区| 91视频国产观看| 久久超碰97中文字幕| 亚洲另类在线一区| 精品少妇一区二区三区| 91国产精品成人| 九九精品一区二区| 亚洲综合av网| 国产丝袜在线精品| 欧美日韩在线不卡| 丁香另类激情小说| 日本不卡一二三区黄网| 亚洲免费在线视频一区 二区| 精品国偷自产国产一区| 色先锋aa成人| 国产福利精品导航| 日韩vs国产vs欧美| 亚洲在线一区二区三区| 欧美经典一区二区三区| 欧美精品乱人伦久久久久久| k8久久久一区二区三区| 国产麻豆成人传媒免费观看| 舔着乳尖日韩一区| 亚洲欧美一区二区三区久本道91| 欧美精品一区二区三区久久久| 欧美日产在线观看| 日本电影亚洲天堂一区| 色综合一区二区三区| 丁香网亚洲国际| 精彩视频一区二区三区| 日日骚欧美日韩| 亚洲va欧美va天堂v国产综合| 一区二区三区视频在线看| 国产精品欧美综合在线| 欧美极品少妇xxxxⅹ高跟鞋| 久久久亚洲高清| 精品国产在天天线2019| 日韩免费成人网| 日韩美一区二区三区| 欧美成人综合网站| 精品国产a毛片| 久久午夜免费电影| 国产欧美一区二区三区网站 | 亚洲国产高清aⅴ视频| 日韩一区二区精品葵司在线 | 国产色产综合产在线视频| 欧美一级片在线| 日韩三级视频在线观看| 欧美一区二区精品在线| 日韩一二三区视频| 2024国产精品| 国产女同性恋一区二区| 国产精品美女久久久久久久久久久 | 一区二区在线观看视频| 国产精品网曝门| **性色生活片久久毛片| 亚洲欧美一区二区不卡| 亚洲欧美偷拍另类a∨色屁股| 亚洲国产日韩av| 久久99久久99| 99re在线精品| 欧美日韩国产精品自在自线| 日韩三级视频在线观看| 蜜臀va亚洲va欧美va天堂 | 欧美体内she精视频| 精品处破学生在线二十三| 亚洲国产另类av| 欧美精品粉嫩高潮一区二区| 亚洲国产婷婷综合在线精品| 51久久夜色精品国产麻豆| 免费人成网站在线观看欧美高清| 欧美性大战xxxxx久久久| 亚洲天堂中文字幕| 欧美日韩午夜精品| 日韩电影一区二区三区四区| 欧美日产国产精品| 风流少妇一区二区| 日韩一区精品视频| 国产精品久久久久久久久动漫| 一本大道久久a久久综合| 国产精品综合在线视频| 一区二区三区四区在线免费观看| 日韩三级视频在线观看| 一本一道综合狠狠老| 美女性感视频久久| 亚洲一区二区三区在线看| 久久九九99视频| 日韩欧美国产精品| 欧美美女视频在线观看| 91免费视频观看| 成人精品国产免费网站| 成人中文字幕合集| 国产精品一区在线| 蜜桃久久久久久| 午夜婷婷国产麻豆精品| 亚洲免费在线观看| 亚洲成人精品影院| 日韩成人av影视| 国产又粗又猛又爽又黄91精品| 轻轻草成人在线| 国产精品一区专区| 99久久精品久久久久久清纯| 成人午夜视频福利| 91在线视频官网| 欧美一区二区精品| 日韩一区二区三区四区五区六区| 91久久线看在观草草青青| 97精品国产露脸对白| 欧美日韩国产首页| 久久久久国产成人精品亚洲午夜| 久久久精品国产99久久精品芒果| 国产欧美一区二区精品婷婷| 欧美激情中文字幕| 日本成人在线电影网| 狠狠色狠狠色合久久伊人| 成人永久看片免费视频天堂| 激情成人午夜视频| 国产不卡高清在线观看视频| 色94色欧美sute亚洲13| 91精品国产手机| 欧美成人r级一区二区三区| 国产亚洲精品aa| 亚洲观看高清完整版在线观看| 日本特黄久久久高潮| 色综合久久久网| 亚洲免费毛片网站| 国产麻豆视频精品| 久久久精品黄色| 高清不卡一区二区在线| 精品999久久久| 欧美中文一区二区三区| 国产69精品久久久久777| 日韩你懂的电影在线观看| 成人免费高清视频| 国产很黄免费观看久久| 日韩av电影免费观看高清完整版在线观看| 美女免费视频一区二区| 日韩欧美国产三级电影视频| 国产亚洲精品福利| 日韩一区二区三区av| 在线亚洲免费视频| 一本一本大道香蕉久在线精品| 国产一区亚洲一区| 蜜臀av一级做a爰片久久| 亚洲精品视频一区| 亚洲精品日产精品乱码不卡| 亚洲日本中文字幕区| 伊人婷婷欧美激情| 性久久久久久久| 日本不卡1234视频| 免费在线欧美视频| 久热成人在线视频| 国产精品一级二级三级| 成人久久视频在线观看| 成人h动漫精品| 成人精品国产一区二区4080 | 色偷偷88欧美精品久久久| 激情久久五月天| 亚洲综合成人在线视频| 亚洲色图20p| 国产精品乱人伦一区二区| 久久精品一级爱片| 久久亚洲综合av| 欧美精品免费视频| 91精品国产综合久久久久久久久久 | 91黄视频在线观看| 日本久久一区二区三区| 在线精品亚洲一区二区不卡| 色视频欧美一区二区三区| 一本大道久久a久久综合| 欧美日韩三级一区二区| 亚洲精品一区二区三区99| 久久久久亚洲蜜桃| 亚洲欧美色图小说| 天天综合色天天| 国产一区二区在线观看免费| 国内成+人亚洲+欧美+综合在线|