JSON数据造假和解析

简介: 客户端开发通常要从服务器获取数据,所以就需要调用后台的接口,然后获得后台返回的数据,根据这些数据的格式进行JSON解析。由于后台返回的数据会有不同的格式,所以前端也要采取不同的JSON.parse()方法进行解析。

客户端开发通常要从服务器获取数据,所以就需要调用后台的接口,然后获得后台返回的数据,根据这些数据的格式进行JSON解析。

由于后台返回的数据会有不同的格式,所以前端也要采取不同的JSON.parse()方法进行解析。

首先,来讲一下JSON数据。

简单的JSON数据就像下面这种,我们称之为名称/键对:

{ "name":"Sherry" , "password":"123456" }
我们在客户端解析的时候可以新建一个如下的一个对象类:

public class UserModel {
    
    private String name;
    private String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
然后把获取到的数据data进行数据解析,方法如下(其中user是UserModel的一个对象):

user = JSON.parseObject(data, UserModel.class);
解析出来后我们就可以在相应的Activity或Fragement界面对这个user进行使用,通过user.get()方法把从后台获取到的name和password值赋值给我们想要显示的地方。就比如我们写了一个TextView用来显示name,只需要

TextView tvName = (TextView)findViewById(R.id.***);

tvName.setText(model.getName());

除了上面这种简单的传递对象的JSON格式,我们也经常会遇到传递数组的情况,这种情况比传递名称/键对相对来说复杂一点,类似于下面这样:

{
"userList": [
{ "name":"Sherry" , "password":"123456" },
{ "name":"Anna" , "password":"654321" }
]
}
这其实就是一个List<UserModel>的数组,所以我们像下面这种方式对这个数组进行JSON解析(其中list是Lis<UserModel>的一个对象):

list = JSON.parseObject(data, new TypeReference<List<UserModel>>() {
});
代码中的TypeReference可以用来应对复杂的泛型,通过解析我们可以把这个list以及其中的数据放到我们想要设置的地方。这些都是相对比较简单的数据,所以来说一下数组和名称/键值结合一块用的,示例的返回数据如下:

{
    "hobby": [
        {
            "name": "Sherry",
            "password": "123456",
            "hobby": {
                "id": "1",
                "hobbyName": "basketball"
            }
        }
    ]
}

对于这样的一串数据,首先我们要看最外层的是数组类型还是名称/键值对象,由于上面的数据最外层是由"[ ]"括起来的,所以user_hobby很明显是一个数组,然后在这个数组里面有三个字段:name、password、hobby,在hobby里面最外层又是由"{ }"组成的,因此hobby是一个名称/键对。我们可以有里及外的剖析:

首先可以新建一个HobbyModel对象类,其中添加id和hobbyName这两个字段和他们的set/get方法,这个就不说了,和上面的UserModel类似,然后我们可以再新建一个AboutMeModel对象类,不同的是我们的字段有了一些变化,主要代码如下:

private String name;
private String password;
private List<HobbyModel> list;
同样的,我们可以用下面这条语句取到我们想要的值:

list = JSON.parseObject(data, new TypeReference<List<AboutMeModel>>() {
});

那么如何拿到这些数据呢?数组的话我们可以用for循环,比如我们要取到“Sherry”这条数据,就可以用for循环,也就是list.get(0).getName(),而如果要取到hobbyName,也就是list.get(0).getHobby().get(0).getHobbyName()。

不过由于我们是要调后台接口的,所以有时候后台传送的数据不符合我们的要求,为了避免这个问题,我们可以自己制造JSON假数据。首先我们假设我们希望后台传给我们的数据是上面那一条,我们可以把从后台获取的data重新赋值,代码如下:

String data = "{\"hobby\": "
        + "[{\"name\": \"Sherry\","
        + "\"password\": \"123456\","
        + "\"hobby\":" +
        "{\"id\": \"1\","
        + "\"hobbyName\": \"basketball\""
        + "}}]}";
在上面的代码中有很多“\",这是因为我们的数据中有一些数据是String类型的,需要有""包裹,而单独使用“”会引起报错,所以需要“\"进行转义,\”也就是我们String语句中的“。

以上就是我关于JSON解析的一些小见解,有不对的地方欢迎指正。

list = JSON.parseObject(data, new TypeReference<List<UserModel>>() {
});

目录
相关文章
|
6天前
|
存储 JSON JavaScript
【chat-gpt问答记录】python将数据存为json格式和yaml格式
【chat-gpt问答记录】python将数据存为json格式和yaml格式
22 1
|
12天前
|
存储 JSON JavaScript
使用Python处理JSON格式数据
使用Python处理JSON格式数据
|
2天前
|
XML 数据采集 前端开发
五:爬虫-数据解析之xpath解析
本篇文章主要讲述了数据解析中的xpath解析,及相对路径的定位语法。最后以爬取豆瓣top250首页作为示例总结
19 5
五:爬虫-数据解析之xpath解析
|
9天前
|
JSON 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在使用CDAS语法同步MySQL数据到Hologres时,如果开启了字段类型宽容模式,MySQL中的JSON类型会被转换为什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
10天前
|
JSON API 数据格式
如何用 Python 的 requests 库发送 JSON 数据的 POST 请求
使用 requests 库发送 JSON 数据的 POST 请求是一个非常简单且实用的操作。通过将目标 URL 和 JSON 数据传递给 requests.post 方法,你可以轻松发送请求并处理响应。本篇文章介绍了从安装 requests 库,到发送 JSON 数据的 POST 请求,再到处理响应的整个流程。希望这篇文章能帮助你更好地理解并应用这个强大的 HTTP 请求库。
|
11天前
|
XML 数据格式 Python
Python使用xpath对解析内容进行数据提取
在前面的文章当中,已经教大家如何去获取我们需要的数据原文内容,今天就介绍一个用于提取所需数据的方法之一xpath。在后续会讲解bs4(beautifulsoup),re正则表达式。
|
7天前
|
JSON 资源调度 Kubernetes
实时计算 Flink版操作报错合集之解析JSON数组时,遇到报错,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
11天前
|
JSON Go 数据格式
【golang】json数据解析 - 嵌套json解析
【golang】json数据解析 - 嵌套json解析
13 0
|
16天前
|
存储 JSON 分布式计算
DataWorks产品使用合集之如何在数据服务中处理JSON数据
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
36 11
|
19天前
|
JSON JavaScript IDE
JSON 数据格式化方法
JSON 数据格式化方法
30 3

推荐镜像

更多