perl json模块
JSON - JSON (JavaScript Object Notation) encoder/decoder 简介: use JSON; # imports encode_json, decode_json, to_json and from_json. # simple and fast interfaces (expect/generate UTF-8) $utf8_encoded_json_text = encode_json $perl_hash_or_arrayref;
$perl_hash_or_arrayref = decode_json $utf8_encoded_json_text; # OO-interface $json = JSON->new->allow_nonref; $json_text = $json->encode( $perl_scalar );
$perl_scalar = $json->decode( $json_text ); $pretty_printed = $json->pretty->encode( $perl_scalar ); # pretty-printing # If you want to use PP only support features, call with '-support_by_pp'
# When XS unsupported feature is enable, using PP (de|en)code instead of XS ones. use JSON -support_by_pp; # option-acceptable interfaces (expect/generate UNICODE by default) $json_text = to_json( $perl_scalar, { ascii => 1, pretty => 1 } );
$perl_scalar = from_json( $json_text, { utf8 => 1 } ); # Between (en|de)code_json and (to|from)_json, if you want to write
# a code which communicates to an outer world (encoded in UTF-8),
# recommend to use (en|de)code_json. 这个版本 是兼容JSON::XS 2.34 和以后版本 注意: JSON::PP 是很早包含在JSON发布版本, 在Perl 5.14 变成一个核心模块。 对于这个会话,JSON::PP 是从JSON 发布版本中移除, 现在可以在Perl5的库中发现 JSON 是一个简单的数据类型: 这个模块转换Perl的数据结构到JSON JSON::XS 是最快的和最适当的JSON模块在CPAN ,必须被编译和安装在你的环境 JSON::PP 是一个纯-Perl的模块 区分 模块名'JSON'和格式JSON, 前者是引号通过C<>(它的结果变化和你使用的介质), Module name : JSON Format type : JSON FEATURES 1.正确处理unicode 2. 这个模块(即后端模块) 知道如何处理Unicode,如何和何时做, 甚至记录正确意味着什么 尽管有局限性,这个功能是可用的在Perl 5.6以后 JSON::XS 需要Perl 5.8.2(但是正确工作在5.8.8或者以后版本), 因此在老的版本JSON 应该调用JSON::PP 作为后台 3. 往返的完整性: 当你持续一个perl 数据结果只使用被JSON和PERL支持的数据类型, 描述的数据类型结构是相同的在Perl层面。 JSON 的严格检查的正确性 没有猜测,没有产生非法的JSON 文本, 只有JSON 是被接收作为输入 fast 模块返回一个 JSON::XS 对象本身。相比其他的JSON模块和其他的serialisers 比如存储, simple to use 使用简单 该模块即有一个简单的函数接口以及一个面向对象的接口 合理通用输出格式 你可以选择在最紧凑的单行格式可能的选择(很好的对于简单行基于协议), 一个纯ASCII 格式(对于当你的传输不是9位的,仍旧支持整个Unicode 范围0 函数接口: 一些文件被辅助,从函数接口修改 encode_json $json_text = encode_json $perl_scalar 转换给定的perl 数据结构到一个UTF-8编码的,2进制字符串 decode_json $perl_scalar = decode_json $json_text 和encode_json 相反,期望是一个UTF-8(binary) 字符串和尝试解析一个UTF-8编码的JSON文本, 返回一个结果引用 如何从外部解码数据和编码数据到外部 这个章节假设你的Perl版本是5.8或者更高 如果你知道一个JSON文本从外部世界 -a 网络,一个文件格式等等, 是被编码成UTF-8,,你需要使用decode_json 或者JSON模块对象在启用UTF8的情况下。 解码结果会包含UNICODE 字符串 # from network
my $json = JSON->new->utf8;
my $json_text = CGI->new->param( 'json_data' );
my $perl_scalar = $json->decode( $json_text ); # from file content
local $/;
open( my $fh, '<', 'json.data' );
$json_text = <$fh>;
$perl_scalar = decode_json( $json_text ); 如果外部数据不是UTF-8编码的,首先你必须decode 它的结果变化和你使用的介质
use Encode;
local $/;
open( my $fh, '<', 'json.data' );
my $encoding = 'cp932';
my $unicode_json_text = decode( $encoding, <$fh> ); # UNICODE # or you can write the below code.
#
# open( my $fh, "<:encoding($encoding)", 'json.data' );
# $unicode_json_text = <$fh>; 在这种情况下, $unicode_json_text 当然是UNICODE string. 因此你不需要使用 decode_json nor JSON module object 启用utf8. 现在, 你需要转换你的$perl_scalar 为JSON 数据和发送它到一个外部世界 -a 网络 或者文件内容 你的数据通常包含UNICODE 字符串和你需要转换数据为UTF-8编码的, 如果 $perl_scalar不包含UNICODE 但是$encoding-encoded字符串由于某些原因, 然后它的字符串是被对待为latin1 在perl里(因为它不关心你的$encoding). 你不能使用 encode_json nor JSON 模块对象在UTF8启用的情况下。
perl json模块的更多相关文章
- perl JSON模块使用
简介: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 它基于JavaScript(Standard ECMA-262 3rd Edition - De ...
- 洗礼灵魂,修炼python(70)--爬虫篇—补充知识:json模块
在前面的某一篇中,说完了pickle,但我相信好多朋友都不懂到底有什么用,那么到了爬虫篇,它就大有用处了,而和pickle很相似的就是JSON模块 JSON 1.简介 1)JSON(JavaScrip ...
- python学习笔记(四)random 、json模块
一.模块简介 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 导入模块 import module #导入模块 f ...
- python json模块(15)
JSON 的全称是 JavaScript Object Notation,即 JavaScript 对象符号,它是一种轻量级.跨平台.跨语言的数据交换格式,其设计意图是把所有事情都用设计的字符串来表示 ...
- python的json模块
Python JSON 本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象. 环境配置 在使用 Python 编码或解码 JSON 数据前,我们需要先安装 JSON 模块. ...
- php安装json模块
centOS上因为看php源码中没有json模块,于是采用pecl自动编译安装:# yum install php-devel# yum install php-pear# yum install g ...
- 解决python中json模块loads出来的结构都是unicode的问题
在使用python的json模块对json字串反序列化成python对象的时候出现的字符串都是unicode类型,而不是python内置的str类型.在某种使用场景下用户必须做显式的转换才能正常使用, ...
- 全局变量 urllib模块 json模块
1.vars() 查看一个.py文件中的全局变量 print(vars()) #重点 __name__': '__main__ '__file__': 'C:/Users/lenovo/Pychar ...
- 我为什么要再给lua写一个json模块
最近要给自己编写的服务器加上json解析模块.根据我当前的项目,可以预测服务器中使用json的地方: 通信.由于与客户端通信使用google protocolbuffer,仅在与SDK通信中使用jso ...
随机推荐
- 谷歌三大核心技术(二)Google MapReduce中文版
谷歌三大核心技术(二)Google MapReduce中文版 Google MapReduce中文版 译者: alex 摘要 MapReduce是一个编程模型,也是一个处理和生成超大数据 ...
- kinect for windows - DepthBasics-D2D详解之二
通过上篇文章,我们了解了在视频图像从kinect开发包传输到应用程序之前的一系列初始化工作,那么这篇文章主要来叙述,如何将一帧图像数据获取到,并显示出来的. 更新窗口是在Run函数消息处理中,当Kin ...
- django在视图中使用模板
在视图中使用模板 在学习了模板系统的基础之后,现在让我们使用相关知识来创建视图. 重新打开我们在前一章在 mysite.views 中创建的 current_datetime 视图. 以下是其内容 ...
- 配置greenplum参数
在进行一个greenplum安装之前需要进行配置一下相关的系统参数,否则很容易出现意想不到的错误. 1.修改系统参数 编辑 /etc/sysctl.conf ,以下是最小配置 kernel.shmma ...
- main函数的参数问题 (转载)
void main(int arg ,char *arv[]){} arg -- 命令行参数总个数arv[0] -- 参数1,程序名 arv[1] -- 参数2,字符串 arv[2] -- 参数3,字 ...
- 那些年搞不懂的"协变"和"逆变"
博主之前也不是很清楚协变与逆变,今天在书上看到了有关于协变还是逆变的介绍感觉还是不太懂,后来看了一篇园子里面一位朋友的文章,顿时茅塞顿开.本文里面会有自己的一些见解也会引用博友的一些正文,希望通过本篇 ...
- Delphi资源大全
A curated list of awesome Delphi frameworks, libraries, resources, and shiny things. Inspired by awe ...
- VC++共享数据段实现进程之间共享数据
当我写了一个程序,我希望当这个程序同时运行两遍的时候,两个进程之间能共享一些全局变量,怎么办呢?很简单,使用VC\VC++的共享数据段.; #pragma data_seg()//恢复到正常段继续编程 ...
- redis(三)redis+Keepalived主从热备秒级切换
一 简介 安装使用centos 5.10 Master 192.168.235.135 Slave 192.168.235.152 Vip 192.168.235.200 编译环境 yum -y in ...
- Bugzilla使用手册及解决方案
Bugzilla使用手册 Bugzilla 是一个开源的缺陷跟踪系统(Bug-Tracking System),它可以管理软件开发中缺陷的提交(new),修复(resolve),关闭(close)等整 ...