JSON 通常用于与服务端交换数据。

在接收服务器数据时一般是字符串。

我们可以使用 JSON.parse() 方法将数据转换为 ruby 对象。

一. json字符串解析

require 'json'

my_hash = JSON.parse('{"hello": "goodbye"}')
puts my_hash['hello'] #=> 'goodbye'

如果json字符串比较复杂,包含单引号,双引号;这里有两个办法:

  1. 用双引号包含json字符串,并对json字符串中的每个双引号进行转义(这个操作,有些ide可以支持,rubymine中没发现)比较繁琐
  2. 将json字符串写入到json文件中,通过读取json文件的方式解析
    require 'json'
    require 'pp' json = File.read('input.json')
    obj = JSON.parse(json) pp obj

      

二.ruby json对象转为json字符串

  1. generate

    require 'json'
    
    my_hash = {:hello => "goodbye"}
    puts JSON.generate(my_hash) #=> "{\"hello\":\"goodbye\"}"
  2. to_json

    require 'json'
    {:hello => "goodbye"}.to_json #=> "{\"hello\":\"goodbye\"}"
    1.to_json #=> "1"

    JSON.generate只允许将对象或数组转换成JSON字符串,to_json可以接收许多类型

三.[](object, opts = {})

如果对象是字符串类型,解析字符串并将解析后的结果作为Ruby数据结构返回。否则就会从Ruby数据结构对象生成一个JSON文本并返回它。

相当于会先判断对象类型,如果是ruby json类型则转化为json字符串;如果是json字符串则转化为ruby josn类型

 

ruby json解析&生成的更多相关文章

  1. Qt JSON解析生成笔记(把JSON转成一个类对象)

    对于这样一段json { "name": "布衣食", "gender": "Male", "age" ...

  2. Qt JSON解析生成笔记

    对于这样一段json { "name": "布衣食", "gender": "Male", "age" ...

  3. android Json 解析和生成

    什么是json: JSON即JavaScript Object Natation的简称,它是一种轻量级的数据交换格式,非常适合服务器与JavaScript的交互.JSON易于人阅读和编写.同时也易于机 ...

  4. java中json数据生成和解析(复杂对象演示)

    1.json简单介绍 1.1 json是最流行和广泛通用的数据传输格式,简称JavaScript Object Notation,最早在JavaScript中使用. 1.2 举个例子,下面是一个jso ...

  5. QT json字符串生成和解析

    1         QT json字符串生成和解析 1.1  QT Json解析流程 (1)  字符串转化为QJsonDocument QJsonParseError json_error; QJso ...

  6. C#.Net 使用 JsonReader/JsonWriter 高性能解析/生成 Json 文档

    Swifter.Json 是由本人编写的高性能且多功能的 Json 解析库.下图是 Swifter.Json 与 .Net 平台上的其他 Json 库性能对比: 在 Swifter.Json 近期更新 ...

  7. PHP获取cookie、Token、模拟登录、抓取数据、解析生成json

    本文介绍使用PHP获取cookie,获取Token.以及模拟登录.然后抓取数据.最后解析生成json的的过程. 0. 设置Cookie路径 set_time_limit(0); //使用的cookie ...

  8. GeoJson的生成与解析,JSON解析,Java读写geojson,geotools读取shp文件,Geotools中Geometry对象与GeoJson的相互转换

    GeoJson的生成与解析 一.wkt格式的geometry转成json格式 二.json格式转wkt格式 三.json格式的数据进行解析 四.Java读写geojson 五.geotools读取sh ...

  9. Android总结之json解析(FastJson Gson 对比)

    前言: 最近为了统一项目中使用的框架,发现项目中用到了两种json解析框架,他们就是当今非常主流的json解析框架:google的Gson 和阿里巴巴的FastJson,为了废除其中一个所以来个性能和 ...

随机推荐

  1. table是可语义化

    为了使我们的网站更好的被搜索引擎抓取收录,更自然的获得更高的流量,网站标签的语义化就显得尤为重要.所谓标签语义化,就是指标签的含义. 为了更好的理解标签的语义化,先看下面这个例子: <table ...

  2. C#设计模式之代理模式(一)

    原文地址:http://blog.csdn.net/lovelion/article/details/8227953 代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时 ...

  3. mysql使用mysqld_multi工具启动多实例

    先给出实验环境/etc/my.cnf文件内容修改内容为:添加了[mysqld_multi]标签和多出来两个数据库的标签[mysqld3307]和[mysqld3308]配置完成后启动方法,举一例:my ...

  4. C/C++中构造函数和析构函数能否被继承

    http://bbs.csdn.net/topics/390160673 标准方面做了要求的.Even though destructors are not inherited 构造函数和析构函数是不 ...

  5. 描边时消除锯齿SetSmoothingMode

    SmoothingModeAntiAlias 指定消除锯齿的呈现. SmoothingModeDefault 指定默认模式. SmoothingModeHighQuality 指定高质量.低速度呈现. ...

  6. 分享一个settings.xml

    <?xml version="1.0" encoding="UTF-8"?> <settings> <localRepositor ...

  7. 2018.11.12 Spring事务的实现和原理

    Spring事务用法示例与实现原理 关于事务,简单来说,就是为了保证数据完整性而存在的一种工具,其主要有四大特性:原子性.一致性.隔离性和持久性.对于Spring事务,其最终还是在数据库层面实现的,而 ...

  8. idea + maven + webapp 项目搭建

    1.File-> New -> Project

  9. 【洛谷P2746】[USACO5.3]校园网Network of Schools

    校园网Network of Schools 第一问:Tarjan缩点,搞出每一个连通块,入度为零的连通块是需要必须接受新软件副本的,统计数量即可 第二问:要让整个图构成一个环,显然要将入度为零点和出度 ...

  10. 【luogu P3469 [POI2008]BLO-Blockade】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3469 #include <cstdio> #include <cstring> #i ...