简介:
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(<MYFILE>) 
  {
    $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'}.",";                                                                                                                 
}

Perl解析JSON数据精解的更多相关文章

  1. JavaScript如何处理解析JSON数据详解

    JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON ...

  2. Java构造和解析Json数据的两种方法详解二

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...

  3. Java构造和解析Json数据的两种方法详解二——org.json

    转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的jso ...

  4. Java构造和解析Json数据的两种方法详解一——json-lib

    转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多JAVA下的jso ...

  5. Java构造和解析Json数据的两种方法详解一

    一.介绍 JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.js ...

  6. Google Gson解析Json数据应用实例

    转自:http://lixigao449778967.blog.163.com/blog/static/24985164201269105928783/ 1.需要的Jar包 1) Google Gso ...

  7. (转)springMVC框架下JQuery传递并解析Json数据

    springMVC框架下JQuery传递并解析Json数据 json作为一种轻量级的数据交换格式,在前后台数据交换中占据着非常重要的地位.Json的语法非常简单,采用的是键值对表示形式.JSON 可以 ...

  8. Introduction to Structured Data json的2种形式 JAVA解析JSON数据 - JsonArray JsonObject

    https://developers.google.com/search/docs/guides/intro-structured-data Structured data refers to kin ...

  9. 教你不编程快速解析 JSON 数据

    JSON 是一种轻量级的,不受语言约束的数据存储格式,大部分编程语言都可以解析它,并且对编程人员也十分友好.我们在进行通讯/数据交互时,非常经常用到 JSON 格式. 但是,我们在进行数据存储的时候, ...

随机推荐

  1. 利用BURPSUITE检测CSRF漏洞

    CSRF漏洞的手动判定:修改referer头或直接删除referer头,看在提交表单时,网站是否还是正常响应. 下面演示用Burpsuite对CSRF进行鉴定. 抓包. 成功修改密码完成漏洞的利用.

  2. java jvm学习

    在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步? 在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的. 线程之间通过共享程序公共的状态,通 ...

  3. Mac安装IntelliJ IDEA时快捷键冲突设置

    Mac有专门的快捷键,和Linux/Windows的不一样. 下面是发现的一些需要屏蔽的快捷键: 一.搜狗输入法: 暂时没发现有冲突. 二.系统 代码提示:Ctrl+空格(输入法开关) 三.其它 暂无 ...

  4. Linux配置防火墙添加端口(Ubuntu/Debian无法使用此方法)

    注意:Ubuntu/Debian无法使用此方法 1.打开iptables vi /etc/sysconfig/iptables 2.添加防火墙规则 规则参考:http://www.cnblogs.co ...

  5. Free web scraping | Data extraction | Web Crawler | Octoparse, Free web scraping

    Free web scraping | Data extraction | Web Crawler | Octoparse, Free web scraping 人才知了

  6. C# 读写bat文件

    读: var batFile = "D:\\test.bat"; if (File.Exists(batFile)) { using (var sr = new StreamRea ...

  7. easyui datagrid client搜索、分页、排序

    easyui datagrid的排序默认是server端排序.能够用sorter实现client排序[2].client分页可用filter实现[3].client搜索相同能够用filter实现. 不 ...

  8. 使用BatteryHistorian分析和优化应用电量

    欢迎Follow我的GitHub, 关注我的CSDN. 在Android项目中, 较难监控应用的电量消耗, 可是用户却很关心手机的待机时间. 过度耗电的应用, 会遭到用户无情的卸载, 不要存在侥幸心理 ...

  9. HDU 1423 Greatest Common Increasing Subsequence(LICS入门,只要求出最长数)

    Greatest Common Increasing Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536 ...

  10. centos6.3升级python至2.7.5

    centos6.3自带的python版本是2.6.6,有时候需要升级到2.7.这里记录一下升级过程,方便查阅.实际上是转载自http://flyingdutchman.iteye.com/blog/1 ...