最近项目中需要封装一套复杂的数据模型返回给前端,大致就是一个用户会有多笔订单,每个订单下可能会有多笔保单,

大致的数据模型如下:

为了方面描述,先看一下一个用户下有一条订单,一条订单下有一个保险订单的情况

data: {

" allCommunityTotalContribution ": "全社总盈余贡献单位数",

" mySumContributionNumber ": "我的保单盈余贡献",

" orderDetailModel ": [{

“orderNumber”:“订单号”,

" policyDetailModel ":{

“orderNumber”:“订单号”,

“orderEffectiveTime”:“订单生效时间”,

“insuranceName”: 保险名称,

“nameOfAssured”:“被保险人姓名”,

“policyEffectiveState”:“保单生效状态”,

“surplusContributionNumber”:“对应保单盈余贡献单位数”

},
                         },
                ]
},

success: true

此时,需要定义数据库对应的Model

订单层面的list<model>下还有保单层面的model

保单层面下的model定义了保单的相关属性

下面是mapperInterface和mapper.xml文件

自定义一个resultmap,将订单层面的ORDER_NUMBER和该订单号对应的保单号对应,因为是一对多,所以用标签<collection>,,因此在下面的<collection>中需要多定一个属性,用ORDER_NUMBER对应保单

mybati会自动根据自己定义的resultMap去封装参数到model中

返回的参数如下:

{
"data": {
"allCommunityTotalContribution": 10383837.27,
"mySumContributionNumber": 404316.24,
"proportionValue":"占全社总数比例小于万分之0.1",
"orderDetailModel": [
{
"orderEffectiveTime": "2017-05-26",
"orderNumber": "D000001725261991",
"policyDetailModel": [
{
"insuranceCode": "IAMGLTD01A",
"insuranceName": "互信一生终身团体养老年金保险",
"nameOfAssured": "沈静",
"orderNumber": "D000001725261991",
"policyEffectiveState": "1",
"surplusContributionNumber": 101079.06
}
]
},
{
"orderEffectiveTime": "2017-05-26",
"orderNumber": "D000002265263965",
"policyDetailModel": [
{
"insuranceCode": "IAMGLTD01A",
"insuranceName": "互信一生终身团体养老年金保险",
"nameOfAssured": "沈静",
"orderNumber": "D000002265263965",
"policyEffectiveState": "1",
"surplusContributionNumber": 101079.06
}
]
},
{
"orderEffectiveTime": "2017-05-26",
"orderNumber": "D000003875264027",
"policyDetailModel": [
{
"insuranceCode": "IAMGLTD01A",
"insuranceName": "互信一生终身团体养老年金保险",
"nameOfAssured": "沈静",
"orderNumber": "D000003875264027",
"policyEffectiveState": "1",
"surplusContributionNumber": 101079.06
}
]
},
{
"orderEffectiveTime": "2017-05-26",
"orderNumber": "D000003265263561",
"policyDetailModel": [
{
"insuranceCode": "IAMGLTD01A",
"insuranceName": "互信一生终身团体养老年金保险",
"nameOfAssured": "沈静",
"orderNumber": "D000003265263561",
"policyEffectiveState": "1",
"surplusContributionNumber": 101079.06
}
]
}
]
},
"success": true
}

关于多重嵌套的JSON数据解析的更多相关文章

  1. python中jsonpath模块,解析多层嵌套的json数据

    1. jsonpath介绍用来解析多层嵌套的json数据;JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, ...

  2. JSON数据解析 基础知识及链接收集

    JSON数据解析学习 JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. JSON 是存储和交换文本信息的语法.类似 XML.但是JSON 比 ...

  3. iOS - JSON 数据解析

     iOS - JSON 数据解析 前言 NS_CLASS_AVAILABLE(10_7, 5_0) @interface NSJSONSerialization : NSObject @availab ...

  4. 使用Gson轻松解决复杂结构的Json数据解析

    转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50961803 JSON简介 JSON(JavaScript Object Notati ...

  5. 多叉树结构:JSON数据解析(一)

    多叉树结构:JSON数据解析(一) 最近做一个实时数据搜索引擎的项目中,在项目架构的偏顶层需要写一个JSON数据解析的模块,由于目前JSON解析没有现成统一开源框架可以利用,目前只是手工利用com.a ...

  6. [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析

    [DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 场景模拟 假设由于漏存JD SKU对应的店铺信息.这时我们需要重新完全采集所有 ...

  7. 浅谈JSON数据解析方法

    JSON数据解析 JSON是什么?? 如何把JSON数据解析出来 如何把一个字典转换为JSON JSON详细介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交 ...

  8. JSON数据解析(转)

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android ...

  9. JSON数据解析(GSON方式) (转)

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 在上一篇博文<Andro ...

随机推荐

  1. 最长子串(Leetcode-3 Longest Substring Without Repeating Characters)

    Question: Given a string, find the length of the longest substring without repeating characters. Exa ...

  2. 数据库-mysql数据库和表操作

    一:数据库查询增加删除 1)mysql数据库查询:show databases MariaDB [mysql]> show databases; +--------------------+ | ...

  3. ThinkPHP小知识点

    ThinkPHP模版中时间戳转换为时间 {$vo.data|date='Y-m-d',###} thinkphp字符截取函数msubstr() ThinkPHP有一个内置字符截取函数mb_substr ...

  4. type Iterator does not take parameters

    在ubuntu编译java程序时报错:type Iterator does not take parameters 源码如下: package object; import java.util.*; ...

  5. T-sql语句修改数据库逻辑名、数据库名、物理名(sql2000)

    --更改MSSQL数据库物理文件名Sql语句的写法 --注意:要在活动监视器里面确保没有进程连接你要改名的数据库!!!!!!!!!!!!!!!!!!!! -- Sql语句如下 USE master - ...

  6. java 基础类库之 SysFun

    /** * 将对象转为字符串:为空,则返回空字符串:而不是"null" * @param pObj 为空,则返回空字符串 * @return */ public static St ...

  7. USACO 6.3 Fence Rails(一道纯剪枝应用)

    Fence RailsBurch, Kolstad, and Schrijvers Farmer John is trying to erect a fence around part of his ...

  8. 三 oracle 用户管理一

    一.创建用户概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用.create user 用户名 identified by 密码; ...

  9. Android自动化页面测速在美团的实践

    背景 随着移动互联网的快速发展,移动应用越来越注重用户体验.美团技术团队在开发过程中也非常注重提升移动应用的整体质量,其中很重要的一项内容就是页面的加载速度.如果发生冷启动时间过长.页面渲染时间过长. ...

  10. KVM libvirt的CPU热添加

    一. NUMA1. NUMA 介绍    早期的时候,每台服务器都是单CPU,随着技术的发展,出现了多CPU共同工作的需求.    NUMA(Non-Uniform Memory Access,非一致 ...