简介:
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. hdu 5012 bfs 康托展开

    Dice Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submi ...

  2. R语言入门--画图(一)--需要注意的地方

    一.注意‘\t’是‘\t’     不是‘/t’  写'/t'就错了   就不是换行符了 二.程序报错先检查有没有这个包

  3. SLAVEOF以后

    当我们想要某个Redis服务器复制另一个服务器时,我们可以在连接这个Redis服务器的客户端上输入“SLAVEOF”命令指定另一个服务器的IP地址和端口号: SLAVEOF <master_ip ...

  4. 动态AdvStringGrid完美示例 (AdvStringGrid使用技巧/Cells)

    http://www.cnblogs.com/JackSun/archive/2010/12/16/1908104.html 此窗体,只需要简单准备如下,即可运行:    1,添加一个TAdvStri ...

  5. Spring Boot 2 快速教程:WebFlux 集成 Mongodb(四)

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第104篇原创 文章工程:* JDK 1.8* M ...

  6. webstorm(二):拼写warning

    逼死强迫症之对拼写进行检查,警告 typo:in word “msgfromfather”

  7. 洛谷——P3576 [POI2014]MRO-Ant colony

    P3576 [POI2014]MRO-Ant colony 题目描述 The ants are scavenging an abandoned ant hill in search of food. ...

  8. 使用git 高效多人合作

    复习一下... 附加学习链接: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/) ...

  9. Go -- 漫谈IM通信架构

    前前后后做的IM和推送系统已经有好几个了,一直都想好好总结下,因此就有了这篇文章.在我刚学编程的那会儿,觉得网络通信是一个很牛逼和门槛很高的一门技术,但是随着开源技术的发展和互联网知识的共享,现在要写 ...

  10. Linux下Tomcat VM參数改动

    不可行的方法 最初我直接改动catalina.sh, 将JAVA_OPTS变量加上了 -server -Xms1G -Xmx1G -XX:+UserG1GC 最初看起来没啥问题,可是当服务器运行几天后 ...