Json.NET 单个对象Json字符串反序列成两个不同实体对象

本文主要介绍Newtonsoft.JSON(Json.NET)中,将一个对象的Json字符串反序化成两个不同的实体对象的方法代码。具体效果如下:

Json字符串

[{"guardian_id": "1453","guardian_name": "Foo Bar","patient_id": "938","patient_name": "Foo Bar",
}]

反序列化成的两个Model实例对象

class Guardian {[JsonProperty(PropertyName = "guardian_id")]public int ID { get; set; }[JsonProperty(PropertyName = "guardian_name")]public int Name { get; set; }
}class Patient {[JsonProperty(PropertyName = "patient_id")]public int ID { get; set; }[JsonProperty(PropertyName = "patient_name")]public int Name { get; set; }
}

1、分别反序化成实体(model)对象

string json = @"[{'guardian_id':'1453','guardian_name':'Foo Bar','patient_id':'938','patient_name':'Foo Bar'}]";
var guardians = JsonConvert.DeserializeObject<List<Guardian>>(json);
var patients = JsonConvert.DeserializeObject<List<Patient>>(json);

2、通过Pair类反序化

反序化一次就可以实现

Pair类如下

public class Pair
{public Pair(){Guardian = new Guardian();Patient = new Patient();}[JsonIgnore]public Guardian Guardian { get; set; }[JsonIgnore]public Patient Patient { get; set; }[JsonProperty(PropertyName = "guardian_id")]public int GuardianID{get { return Guardian.ID; }set { Guardian.ID = value; }}[JsonProperty(PropertyName = "guardian_name")]public string GuardianName{get { return Guardian.Name; }set { Guardian.Name = value; }}[JsonProperty(PropertyName = "patient_id")]public int PatientID{get { return Patient.ID; }set { Patient.ID = value; }}[JsonProperty(PropertyName = "patient_name")]public string PatientName{get { return Patient.Name; }set { Patient.Name = value; }}
}

反序列化代码

string json = @"[{'guardian_id':'1453','guardian_name':'Foo Bar','patient_id':'938','patient_name':'Foo Bar'}]";
var pairs = JsonConvert.DeserializeObject<Pair[]>(json);
if (pairs.Any())
{var pair = pairs[0];Console.WriteLine(pair.Guardian.Name);Console.WriteLine(pair.Patient.Name);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/198001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

能源企业管理ERP系统都有哪些?可以帮助企业解决哪些难点

能源企业在不同的发展阶段面对的经营压力以及遇到的管理问题各异&#xff0c;随着部分产品结构的复杂化&#xff0c;日常经营管理工作也愈加繁琐。 有些能源企业内部存在信息传递不畅、经营数据统计不及时、部门协作效率低、多仓库和多平台数据不统一等情况&#xff0c;而这些…

GPT3年终总结

User You 程序员年度绩效总结 ChatGPT ChatGPT 程序员年度绩效总结通常包括以下几个方面&#xff1a; 目标达成情况&#xff1a; 回顾年初设定的目标&#xff0c;评估在项目完成、技能提升等方面的达成情况。 工作贡献&#xff1a; 强调在项目中的个人贡献&#xff0c;包括…

Flask 快速入门

引言 Flask 是一个轻量级的Web框架&#xff0c;以简洁和灵活而著称。它提供了构建Web应用所需的基本工具&#xff0c;同时保持了足够的可扩展性&#xff0c;使其成为初学者和有经验的开发人员的首选。本系列专栏将带领大家逐步深入学习 Flask&#xff0c;从最基础的概念开始&a…

RH850P1X芯片学习笔记-Overview

文章目录 Outline产品列表功能框图特点Pin和引脚功能CPU系统CPUFPU浮点运算单元中断处理保护机制指令缓存Local RAMGlobal RAM处理器间通信和相互排斥机制 操作模式中断功能DMA电源供电Reset控制单元时钟控制单元CSIH-SPIMCAN看门狗计时器系统计时器GTM通用定时器模块外设互联P…

openCV在Visual Studio2019下的集成使用

文章目录 下载OpenCV工具选择合适库文件使用visual studio创建空项目测试运行运行结果 下载OpenCV工具 官网下载实在太慢&#xff0c;还老实下不下来。下面从网上找到些别人分享的一些版本&#xff08;从3.4到4.7&#xff09;放到了网盘里&#xff0c;请按需下载使用。 链接&a…

轻量封装WebGPU渲染系统示例<43>- PBR材质与阴影实(源码)

原理简介: 1. 基于rendering pass graph实现。 2. WGSL Shader 基于文件系统和宏机制动态组装。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/PBRShadowTest.ts 当前示例运行效果: 此示例基于此渲染系统实现&a…

Ribbon-IRule 修改负载均衡的规则

1、负载均衡规则描述 &#xff08;1&#xff09;整体关系 &#xff08;2&#xff09;规则描述 内置负载均衡规则类规则描述RoundRobinRule简单轮询服务列表来选择服务器。它是Ribbon默认的负载均衡规则。AvailabilityFilteringRule对以下两种服务器进行忽略: (1)在默认情况下&…

1-4、调试汇编程序

语雀原文链接 文章目录 1、执行过程第一步&#xff1a;源程序第二步&#xff1a;编译连接第三步&#xff1a;执行 2、DOSBox运行程序第1步 进入EDIT.EXE第2步 编写源程序第3步 编译第4步 连接第5步 执行完整过程 3、DEBUG跟踪执行过程加载程序到内存执行程序debug和源程序数字…

Python处理Point, MultiPolygon, Polygon, LineString等Geo地理形状数据

依赖库 from shapely import Polygon, Point, LineString import re自编写函数 1. 将 字符串Polygon/MultiPolygon数据 转换为 坐标数据 输入输出 调用方式&#xff1a;fork_MULTIPOLYGON_POLYGON_to_POLYGONLIST(str_polygon) 输入&#xff1a;字符串形式的Polygon/Multi…

软件平台架构设计与技术管理之道笔记

软件平台架构设计与技术管理之道笔记 认知 领导软件平台各方面的工作&#xff0c;对技术底蕴、思维模式、决策能力、工作风格、文化铸造等方面都有极高的要求&#xff0c;可以称之为“领域智慧”。认知盲区的代价是巨大的&#xff0c;“不知”比“不会”的后果更严重&#xf…

【Android】HttpURLConnection、OkHttp

WebView 已经在后台帮我们处理好了发送HTTP请求、接收服务器响应、解析返回数据&#xff0c;以及最终的页面展示这几步工作。只不过它封装得实在是太好了&#xff0c;反而使得我们不能那么直观地看出HTTP到底是如何工作的。因此&#xff0c;接下来我们通过手动发送HTTP请求的方…

探讨Unity中的动画融合技术(BlendTree)

动画在游戏和虚拟现实应用中扮演着关键的角色&#xff0c;而动画融合技术则是使角色动作更加流畅和逼真的核心。在Unity引擎中&#xff0c;我们可以使用动画混合树&#xff08;Blend Trees&#xff09;来实现这一目标。本篇技术博客将深入讨论动画融合技术的实现原理、在Unity中…

rust 包模块组织结构

一个包&#xff08;package&#xff09;可以拥有多个二进制单元包及一个可选的库单元包。随着包内代码规模的增长&#xff0c;你还可以将代码拆分到独立的单元包&#xff08;crate&#xff09;中&#xff0c;并将它作为外部依赖进行引用。 RUST提供了一系列的功能来帮助我们管…

做一个类似万师傅家政小程序需要有哪些功能?

现如今人们生活节奏不断加快&#xff0c;自然很少有时间去处理生活中的琐事&#xff0c;恰好家政维修保洁小程序开发则能给线下用户提供方便。 家政保洁小程序应该具备哪些功能&#xff1f; 1、提供家政行业资讯&#xff0c;方便用户在选择家政保洁前了解行业动态。 2、分类搜…

C 中的枚举

简要回顾 最简单的枚举是比宏稍微高级一点的东西。它们可以避免像这样做&#xff1a; #define COLOR_BLACK 0 #define COLOR_WHITE 1 #define COLOR_BLUE 2 #define COLOR_GREEN 3 #define COLOR_RED 4 你可以这样做&#xff1a; enum color {COLOR_BLACK,COLOR_WHITE,COLO…

Android wifi Enable之后扫描流程

流程框架图 通常我们在设备开启wifi之后&#xff0c;等会会自动扫描出周围的热点。 下面看下自动扫描周围热点的流程 代码流程 1. ClientModeManager.ClientModeStateMachine ClientModeStateMachine 由CMD_START 转换到StartedStateStartedState 状态机&#xff0c;在更新…

ubuntu内移除snap

ubuntu 移除snap snap 是 ubuntu 的集中式管理的软件商城&#xff0c;但在使用过程中软件更新没有很及时。ubuntu 20.04 在安装开始就有预装了 snap&#xff0c;所以我想把它移除掉&#xff0c;省出系统空间。 具体参考链接&#xff1a;https://cloud.tencent.com/developer/…

让代码变得优雅简洁的神器:Java8 Stream流式编程

原创/朱季谦 本文主要基于实际项目常用的Stream Api流式处理总结。 因笔者主要从事风控反欺诈相关工作&#xff0c;故而此文使用比较熟悉的三要素之一的【手机号】黑名单作代码案例说明。 我在项目当中&#xff0c;很早就开始使用Java 8的流特性进行开发了&#xff0c;但是一直…

关于区块链

一、区块链 区块链技术是一种去中心化、不可篡改、安全可靠的分布式账本技术&#xff0c;应用场景广泛&#xff0c;有以下几个方面的优势&#xff1a; 金融领域&#xff1a;区块链技术可以用于实现安全的数字货币交易&#xff0c;如比特币等。同时&#xff0c;区块链技术可以用…

流媒体方案之FFmpeg——实现物联网视频监控项目

目录 前言 一、FFmpeg介绍 二、FFmpeg简易理解 三、FFmpeg的重要概念 四、软硬件准备 五、移植、运行FFmpeg 六、运行FFmpeg 前言 最近想做一个安防相关的项目&#xff0c;所以跟着韦东山老师的视频来学习视频监控方案的相关知识&#xff0c;韦东山老师讲的课非常好&…