Vin*_*eel 5 ruby json ruby-on-rails gson json-deserialization
在 Ruby 中是否有与 Java 的 Google JSON 等效的 JSON 反序列化。无需为每个类定义任何自定义序列化器或反序列化器,您可以编写一行代码将 JSON 字符串转换为自定义 Java 类,如下所示。
Address address=gson.fromJson(addressJsonStringForm, Address.class);
为了实现这一点,不需要在 Address 类中放置任何注释/接口,也不需要为我们需要反序列化的每个类编写单独的 Deserializer 实用程序。这使得从第三方库反序列化/序列化类变得非常容易。关于是否序列化空值/包含/排除某些属性等,有很多选项。我正在 Ruby 中寻找这样一个通用的 JSON 和自定义对象序列化/反序列化实用程序。我是 Ruby 的新手。
参考:
您可以使用 JSON 模块将其转换为哈希:
require 'json'
hash = JSON.parse('{"age":18, "name":"Vinicius"}')
hash["age"]
=> 18
Run Code Online (Sandbox Code Playgroud)
如果要将其转换为“结构化”对象,可以使用 OpenStruct:
require 'json'
require 'ostruct'
person = JSON.parse('{"age":18, "name":"Vinicius"}', object_class: OpenStruct)
person.name
=> "Vinicius"
Run Code Online (Sandbox Code Playgroud)
OpenStruct 是一种类似于哈希的数据结构,它允许定义任意属性及其伴随的值。这是通过使用 Ruby 的元编程在类本身上定义方法来实现的。(文档)
如果您并不总是知道 JSON 键,OpenStruct 可能会帮助您,因为它会动态创建一个对象。
DeserializablePost.call(json_hash)
Run Code Online (Sandbox Code Playgroud)
song = Song.new(title: "Medicine Balls")
SongRepresenter.new(song).from_json('{"title":"Linoleum"}')
song.title #=> Linoleum
Run Code Online (Sandbox Code Playgroud)
json_string = MovieSerializer.new(movie).serialized_json
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3959 次 |
| 最近记录: |