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 ...
随机推荐
- (IOS)截图Demo
思路是建一个UIView的子类,获取划动出的矩形,用协议将矩形传递给代理对象,依据该矩形完成图像数据的截取,并显示出来. 截图视图类: #import <UIKit/UIKit.h> @p ...
- python list comprehension twos for loop 嵌套for循环
list comprehension 后面可以有多个for loops,每个for后面可以有if [(x, y, x * y)for x in(0,1,2,3)for y in(0,1,2,3)if ...
- Debian下Apache配置多域名访问
请见Github博客:http://wuxichen.github.io/Myblog/php/2014/10/10/DebianApacheSetting.html
- 【数据库摘要】5_Sql_IN
IN 操作符 IN 操作符同意您在 WHERE 子句中查找多个值. SQL IN 语法 SELECT column_name(s) FROM table_name WHERE column_name ...
- ftp上传错误
明明设置好了权限,但是在上传的时候提示如下错误,但在使用的过程当中,发现有的时候是可以上传的,很奇怪的问题. baidu 了一下,发现是下面的这个设置导致的.改过来后,果然正常. 这个设置只是一个字符 ...
- iOS开发中NSDate时间戳的转换--
NSTimeInterval time =(NSTimeInterval )[model.day floatValue]; NSDate *date = [NSDate dateWithTimeInt ...
- Huffman树编码-优先队列实现
Huffman编码是之前一道算法作业题,最近又要复习考试了,先把这个的代码再看一下吧. 算法原理很简单,使用优先队列将两个节点弹出,然后合并节点之后再入队列如此循环做下去即可. 主要问题在于树的修改问 ...
- 深入理解-HashMap
一.HashMap概述 HashMap 在家族中位置:实现了Map接口,继承AbstractMap类.HashMap 允许key/value 都为null. 二.HashMap存储结构 HashMap ...
- Python 数据处理扩展包: pandas 模块的DataFrame介绍(读写数据库的操作)
1.读取表中的内容,如下例子: import MySQLdb try: conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='root ...
- DHCP的工作原理
什么是dhcp?它是如何实现的? DHCP称为动态主机配置协议.DHCP服务允许工作站连接到网络并且自动获取一个IP地址.配置DHCP服务的服务器可以为每一个网络客户提供一个IP地址.子网掩码.缺省网 ...