简介:

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模块使用的更多相关文章

  1. perl json模块

    JSON - JSON (JavaScript Object Notation) encoder/decoder 简介: use JSON; # imports encode_json, decode ...

  2. 洗礼灵魂,修炼python(70)--爬虫篇—补充知识:json模块

    在前面的某一篇中,说完了pickle,但我相信好多朋友都不懂到底有什么用,那么到了爬虫篇,它就大有用处了,而和pickle很相似的就是JSON模块 JSON 1.简介 1)JSON(JavaScrip ...

  3. python学习笔记(四)random 、json模块

    一.模块简介 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 导入模块 import module #导入模块 f ...

  4. python json模块(15)

    JSON 的全称是 JavaScript Object Notation,即 JavaScript 对象符号,它是一种轻量级.跨平台.跨语言的数据交换格式,其设计意图是把所有事情都用设计的字符串来表示 ...

  5. python的json模块

    Python JSON 本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象. 环境配置 在使用 Python 编码或解码 JSON 数据前,我们需要先安装 JSON 模块. ...

  6. php安装json模块

    centOS上因为看php源码中没有json模块,于是采用pecl自动编译安装:# yum install php-devel# yum install php-pear# yum install g ...

  7. 解决python中json模块loads出来的结构都是unicode的问题

    在使用python的json模块对json字串反序列化成python对象的时候出现的字符串都是unicode类型,而不是python内置的str类型.在某种使用场景下用户必须做显式的转换才能正常使用, ...

  8. 全局变量 urllib模块 json模块

    1.vars()  查看一个.py文件中的全局变量 print(vars()) #重点 __name__': '__main__ '__file__': 'C:/Users/lenovo/Pychar ...

  9. 我为什么要再给lua写一个json模块

    最近要给自己编写的服务器加上json解析模块.根据我当前的项目,可以预测服务器中使用json的地方: 通信.由于与客户端通信使用google protocolbuffer,仅在与SDK通信中使用jso ...

随机推荐

  1. elementUI 易错点

    1.element table里面添加单选时,如果存在下拉框的筛选功能,那么每次下拉框筛选条件变化时 都得清空之前选中的信息,如果不数据更新后如果更新后的数据跟之前选中的相同 则会无法选中

  2. transient修饰符的作用

    transient修饰符的作用: entity实体类: package com.baidu.entity; import com.fasterxml.jackson.annotation.JsonIg ...

  3. 循环访问 TreeView 控件的所有节点

    创建测试每个节点的递归过程 . private void PrintRecursive(TreeNode treeNode) { // Print the node. System.Diagnosti ...

  4. POJ 1979 Red and Black (简单dfs)

    题目: 简单dfs,没什么好说的 代码: #include <iostream> using namespace std; typedef long long ll; #define IN ...

  5. js 拼接字符串,table等

    var userTableStr=''; userTableStr +='<table width="750" height="33" border=&q ...

  6. 'Upgrade' header is missing

    spring-websocket 握手失败是因为 有拦截器  注释掉拦截器就OK

  7. 使用Jmeter工具对http接口进行压力测试

    1.访问apache官网下载Jmeter工具 地址:https://jmeter.apache.org/download_jmeter.cgi 2.解压压缩包后运行bin目录下jmeter.bat启动 ...

  8. vue-cli#2.0项目结构分析

    项目结构 build 构建工具相关的目录 config 配置目录 dist 通过工具打包生成的最终需要上线的目录 node_modules 存放本地开发所有的依赖包的目录 src 源码目录 stati ...

  9. SpringBoot实战(三)代码热部署

    每次代码改动后都需要重新手动Run项目,心累,在网上找了下,发现SpringBoot提供了热部署的方案,改动代码后自动编译打包,现在将热部署的配置方法记下来: 第一步:在pom.xml中添加依赖,导入 ...

  10. Spring 整合Shiro:记住我

    1.登录方法 /** * 执行登录操作 * * @param username * @param password * @param rememberMe * @param model * @retu ...