前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS,PHP,Python,Java对JSON数据的处理

JS,PHP,Python,Java对JSON数据的处理

作者头像
酒馆丁老师
发布2020-09-08 14:44:31
3.3K0
发布2020-09-08 14:44:31
举报

现在只要编写接口,接口调用,大家都绕不过JSON,各种编程语言里面都有对JSON数据的处理,今天用代码对比下JS,PHP,Python,Java对JSON数据的处理。

目录

1.JSON格式是啥

2.JavaScript中的转化与解析

3.Java中的转化与解析

4.Python中的转化与解析

5.PHP中 的转化与解析

1

JSON格式是啥

JSON: JavaScript Object Notation(JavaScript 对象表示法)。

可以看到JSON 是来自JavaScript,它是存储和交换文本信息的一种方式,大家经常看到*.json 文件,API 接口的返回格式很多都是JSON格式。

JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。目前非常多的动态(PHP,Python,Java,.NET)编程语言都支持JSON。

JSON 的格式如下:

代码语言:javascript
复制
1.数据在名称/值对中
2.数据由逗号分隔
3.大括号保存对象
4.中括号保存数组
5.字符串值要用双引号

例如:

代码语言:javascript
复制
{
code: 200,  #数据在名称/值对中,数据由逗号分隔,大括号保存对象
data: [     #中括号保存数组,列表
        {
          desc: "vita茶 商品描述",
          id: 2,
          name: "vita茶",
          price: 200,
          stock: 20
        },
        {
          desc: "可口可乐 商品描述",
          id: 3,
          name: "可口可乐",
          price: 20,
          stock: 200
        }
],
message: "请求成功"  #字符串值要用双引号
}

以上这个格式 80%的JSON 格式都包含了,再复杂的无非就是以此为基础嵌套。接下来以此为例,将使用JavaScript,Java,Python,PHP分别实现JSON数据的输出与解析。

2

JavaScript中的转化与解析

JavaScript 中可将JSON字符串直接解析为JavaScript的对象

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>


<script>

    var goods1 = {

        desc: "vita茶 商品描述",
        id: 2,
        name: "vita茶",
        price: 200,
        stock: 20

    };
    var goods2 = {
        desc: "可口可乐 商品描述",
        id: 3,
        name: "可口可乐",
        price: 20,
        stock: 200


    };

    var result = {

        code: 200,
        message: "请求成功",
        data: [
            goods1,
            goods2,
        ]
    }
    // 将result 对象转化为 json字符串
    var str = JSON.stringify(result)
    console.log(typeof (str))
    console.log(str)
    console.log('------')
    // JavaScript 将json字符串解析后就会变为JavaScript对象
    var res = JSON.parse(str);
    console.log(typeof(res) )
    console.log(res);
</script>
</body>
</html>

运行结果:

3

Java中的转化与解析

  • Java中的转化与解析 Java中有很多处理JSON格式数据的包,如fastjson,gjson,jackjson,以下列子采用fastjson 实现。
代码语言:javascript
复制
        Goods  goods = new Goods();
        goods.setId(id);
        goods.setDesc("vita茶 商品描述");
        goods.setName("vita茶");
        goods.setPrice(200);
        goods.setStock(20);


        Goods  goods2 = new Goods();
        goods2.setId(3);
        goods2.setDesc("可口可乐 商品描述");
        goods2.setName("可口可乐");
        goods2.setPrice(20);
        goods2.setStock(200);

        List<Goods> goodsList =  Lists.newArrayList();
        goodsList.add(goods);
        goodsList.add(goods2);

        Map<String, Object> aMap = Maps.newHashMap();
        aMap.put("code", 200);
        aMap.put("message", "请求成功");
        aMap.put("data", goodsList);
        String s = JSON.toJSONString(aMap);
        
        //解析 json 字符串为 对象,定义 VO层对象 Result
        Result res = JSON.parseObject(s, Result.class);
        String message = res.getMessage();
        int code = res.getCode();
        List<Goods> goodsList1 = res.getData();     

其中:Goods 为JavaBean。

代码语言:javascript
复制
package com.qustdjx.product.vo;


import lombok.Data;

@Data
public class Goods {


    private int id;
    private String name;
    private int price;
    private int stock;
    private String desc;

}

Result 为JavaBean

代码语言:javascript
复制
package com.qustdjx.product.vo;

import lombok.Data;

import java.util.List;

@Data
public class Result {

    private int code;
    private String Message;
    private List<Goods> data;
}

4

Python中的转化与解析

Python中喜欢用dict 表示JSON的对象,导入json包,

方法json.dumps 将字典转化为json字符串

方法 json.loads 将json字符串转化为对象

代码语言:javascript
复制
import json

goods1 = {
    'desc': "vita茶 商品描述",
    'id': 2,
    'name': "vita茶",
    'price': 200,
    'stock': 20
}
goods2 = {
    'desc': "可口可乐 商品描述",
    'id': 3,
    'name': "可口可乐",
    'price': 20,
    'stock': 200
}

response = {
    'code': 200,
    'message': "请求成功",
    'data': [
        goods1,
        goods2
    ]
}


## 将字典类型 response 转化为 json字符串
str_res = json.dumps(response)
print(str_res)

print('--------')
## 将字符串解析为python 对象
content = json.loads(str_res)
print(content)

5

PHP中的转化与解析

PHP 中使用关联数组来表示 JSON中的对象,

方法 json_encode将数组转化为JSON字符串

方法 json_decode将JSON字符转化为串数组或对象,第二参数为false则为对象,为true则为关联数组。

代码语言:javascript
复制
<?php
$goods1 = array(

    'desc'=> "vita茶 商品描述",
    'id'=> 2,
    'name'=> "vita茶",
    'price'=> 200,
    'stock'=> 20
);


$goods2 = array(
    'desc'=> "可口可乐 商品描述",
    'id'=> 3,
    'name'=> "可口可乐",
    'price'=> 20,
    'stock'=> 200
);

$response = array(
    'code'=> 200,
    'message'=> "请求成功",
    'data'=> [
        $goods1,
        $goods2
    ]
);

// 使用json

$str = json_encode($response,JSON_UNESCAPED_UNICODE);
echo $str;

echo '----';

$res= json_decode($str,true);

var_dump($res);

运行结果:

总结

Java 作为编译语言,要注意变量的类型。

而JavaScript,Python,PHP 作为脚本语言,不需要注意变量类型。

还有很多编程语言都可以对JSON处理,遵循一定规范都是可以对接的。

为啥我感觉没有强制变量类型的编程语言,写起来怎么那么舒服???

真香??

END

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 丁老师的技术随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档