perl JSON模块使用
简介:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。
JSON采用完全独立于语言的文本格式,
但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。
这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
JSON建构有两种结构:
json简单说就是javascript中的对象和数组,
所以这两种结构就是对象和数组2种结构,通过这两种结构可以表示各种复杂的结构
1、对象:对象在js中表示为“{}”扩起来的内容,
数据结构为 {key:value,key:value,...}的键值对的结构,
在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,
取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”扩起来的内容,
数据结构为 ["java","javascript","vb",...],
取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。
解析方法:
JSON文档的解析可以使用Perl的JOSN模块,能很方便解析出各种结构和组合中的数据
实例:
#!/usr/bin/perl
use Encode;
use JSON;
use Data::Dumper;
my $json = new JSON;
#或以转换字符集 my $json = JSON->new->utf8;
my $json_obj;
if(open(MYFILE,
"FILE_PATH/json.html"))
{
print "读取json数据成功。\n";
while()
{
$json_obj =
$json->decode("$_");
#见下面的解析方法
}
}else{
print "读取json数据失败。\n";
}
1. 对象
"title":"都市女孩"
代码:
my
$title = $json_obj->{'title'};
2. 对象组合
"images":{"small":"http:\/\/img3.douban.com\/spic\/s8968115.jpg",
"large":"http:\/\/img3.douban.com\/lpic\/s8968115.jpg",
"medium":"http:\/\/img3.douban.com\/mpic\/s8968115.jpg"
}
代码:
my
$imgurl = $json_obj->{'images'}->{'large'};
3. 数组
"countries":["美国"],
"aka":["女孩我最大(台)","衰姐们"]}
代码:
my
$aka = "";
for my $item(@{$json_obj->{'aka'}})
{
$aka .= $item.",";
}
4. 对象与数组的组合
"casts":[
{"avatars":{"small":"http:\/\/img3.douban.com\/img\/celebrity\/small\/21417.jpg",
"large":"http:\/\/img3.douban.com\/img\/celebrity\/large\/21417.jpg",
"medium":"http:\/\/img3.douban.com\/img\/celebrity\/medium\/21417.jpg"
},
"alt":"http:\/\/movie.douban.com\/celebrity\/1011562\/",
"id":"1011562",
"name":"刘涛"
},
{"avatars":{"small":"http:\/\/img3.douban.com\/img\/celebrity\/small\/34429.jpg",
"large":"http:\/\/img3.douban.com\/img\/celebrity\/large\/34429.jpg",
"medium":"http:\/\/img3.douban.com\/img\/celebrity\/medium\/34429.jpg"
},
"alt":"http:\/\/movie.douban.com\/celebrity\/1044611\/",
"id":"1044611",
"name":"保剑锋"
},
{"avatars":{"small":"http:\/\/img3.douban.com\/img\/celebrity\/small\/33257.jpg",
"large":"http:\/\/img3.douban.com\/img\/celebrity\/large\/33257.jpg",
"medium":"http:\/\/img3.douban.com\/img\/celebrity\/medium\/33257.jpg"
},
"alt":"http:\/\/movie.douban.com\/celebrity\/1315704\/",
"id":"1315704",
"name":"谢祖武"
},
{"avatars":null,
"alt":null,
"id":null,
"name":"乔大韦"
}
]
for
my $item(@{$json_obj->{'casts'}})
{
$cast .= $item->{'name'}.",";
}
注意:json解析异常需要捕获。
原文:http://blog.chinaunix.net/uid-26000296-id-3508036.html
perl JSON模块使用的更多相关文章
- perl json模块
JSON - JSON (JavaScript Object Notation) encoder/decoder 简介: use JSON; # imports encode_json, decode ...
- 洗礼灵魂,修炼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 ...
随机推荐
- App.config配置详解
经上一篇文章https://www.cnblogs.com/luna-hehe/p/9104701.html发现自己对配置文件很是不了解,同样还是查了半天终于发现另一片宝贵文档https://www. ...
- Android tablayout增加选择tab 的事件.
tablayout在点击或者滑动的时候会触发监听事件 , 当你调用这个方法的时候 会触发事件 mTablayout.addOnTabSelectedListener(new TabLayout.On ...
- pace.js 原理(转)
pace.js监控了什么: pace.js对于加载进度监控了什么呢?通过阅读源码,我们看到整体的进度有四个部分组成:document,elements,eventLag和ajax这四种监视器(Moni ...
- 【BZOJ4016】【FJOI2014】最短路径树问题
题意: Description 给一个包含n个点,m条边的无向连通图.从顶点1出发,往其余所有点分别走一次并返回. 往某一个点走时,选择总长度最短的路径走.若有多条长度最短的路径,则选择经过的顶点序列 ...
- BZOJ 2154/2693 Crash的数字表格/jzptab (莫比乌斯反演)
题目大意:求$\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)$的和 易得$\sum_{i=1}^{n}\sum_{j=1}^{m}\frac{ij}{gcd(i,j)}$ 套 ...
- vue2.0移动端自定义性别选择提示框
这篇文章主要是简单的实现了vue2.0移动端自定义性别选择的功能,很简单但是经常用到,于是写了一个小小的demo,记录下来. 效果图: 实现代码: <template> <div c ...
- C++容器(四):map类型
map 类型 map是键-值对的集合.map类型通常可以理解为关联数组:可以使用键作为下标来获取一个值,正如内置数组类型一样.而关联的本质在于元素的值与某个特定的键相关联,而非通过元素在数组内的位置来 ...
- [MST] Describe Your Application Domain Using mobx-state-tree(MST) Models
In this lesson, we introduce the running example of this course, a wishlist app. We will take a look ...
- RIP协议的配置
拓扑图: 要求: 理解RIP协议的工作原理,并通过 RIP 路由协议实现不同网络互通. 配置步骤: 1.配置好 PC 机的 IP 地址等參数. PC 0>ipconfig IP Address. ...
- Android 仿 窗帘效果 和 登录界面拖动效果 (Scroller类的应用) 附 2个DEMO及源代码
在android学习中,动作交互是软件中重要的一部分.当中的Scroller就是提供了拖动效果的类,在网上.比方说一些Launcher实现滑屏都能够通过这个类去实现.以下要说的就是上次Scroller ...