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 ...
随机推荐
- spoj 3871 gcd extreme
题目大意给出一个n,求sum(gcd(i,j),<i<j<=n); 可以明显的看出来s[n]=s[n-]+f[n]; f[n]=sum(gcd(i,n),<i<n); 现 ...
- XML 反序列化为Model
什么也不多说,直接贴代码 需要反序列的XML <?xml version='1.0' encoding='utf-8' ?> <GetCitiesListResponse> & ...
- 链接分析算法之:SALSA算法
链接分析算法之:SALSA算法 SALSA算法的初衷希望能够结合PageRank和HITS算法两者的主要特点,既可以利用HITS算法与查询相关的特点,也可以采纳PageRank的“随机游走模型”,这是 ...
- Apache BeanUtils 1.9.2 官方入门文档
为什么需要Apache BeanUtils? Apache BeanUtils 是 Apache开源软件组织下面的一个项目,被广泛使用于Spring.Struts.Hibernate等框架,有数千个j ...
- 解析LayoutSubviews
layoutSubviews作用 layoutSubviews是对subviews重新布局.比如,我们想更新子视图的位置的时候,可以通过调用layoutSubviews方法,既可以实现对子视图重新布局 ...
- Treasure Exploration(二分最大匹配+floyd)
Treasure Exploration Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 7455 Accepted: 3 ...
- 非root不能gdb attach的限制
Could not attach to process. If your uid matches the uid of the targetprocess, check the setting of ...
- USACO Longest Prefix 【水】
用Dp的思想解决了这道题目,也就是所谓的暴力= = 题意:给出一个集合,一个字符串,找出这个字符串的最长前缀,使得前缀可以划分为这个集合中的元素(集合中的元素可以不全部使用). 还不会Trie 树QA ...
- ios 判断,qq,银行卡,手机号,邮编,生日,数字,字符串,护照, email
http://blog.csdn.net/dyllove98/article/details/8635079 IdentifierValidator.h // // IdentifierValida ...
- Week3(9月26日):做完后,总结下
Part I:提问 =========================== 1.linq小回顾 (1)Movies控制器中Index动作,显示全部电影信息. public ActionResult ...