当前位置: 首页 > article >正文

unity将多层嵌套的结构体与json字符串相互转化

定义多个结构体,将结构体内容输入到最终的JObject中,然后将其转为字符串打印出来,即可。
代码内容如下:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using UnityEngine;

public class Test : MonoBehaviour
{
	private Apple apple;
	private Banana banana;
    private void Start()
    {
		apple = new Apple();
		apple.color = "red";
		apple.size = 10;
		apple.breed = "红富士";

		Monkey monkey = new Monkey();
		monkey.breed = "金丝猴";
		monkey.habitat = "高山密林";

		banana = new Banana();
		banana.breed = "芭蕉";
		banana.monkey = (JObject)JsonConvert.DeserializeObject(JsonConvert.SerializeObject(monkey));

		JObject fruitJObject = new JObject();
		fruitJObject["Apple"] = (JObject)JsonConvert.DeserializeObject(JsonConvert.SerializeObject(apple));
		fruitJObject["Banana"] = (JObject)JsonConvert.DeserializeObject(JsonConvert.SerializeObject(banana));

		Debug.Log(fruitJObject.ToString());
	}
}

/// <summary>
/// 苹果结构体
/// </summary>
struct Apple
{
	public string color;
	public int size;
	public string breed;
}


/// <summary>
/// 香蕉结构体
/// </summary>
struct Banana
{
	public string breed;//!<品种
	public JObject monkey;//!<猴子
}

/// <summary>
/// 猴子结构体
/// </summary>
struct Monkey
{
	public string breed;//!<品种
	public string habitat;//!<栖息地
}

运行结果如下:
在这里插入图片描述
将接收到的json字符串转为JObject类型,然后取出对应的值并打印出来,代码如下:

		string jsonStr = fruitJObject.ToString();
		JObject jsonJObject = (JObject)JsonConvert.DeserializeObject(jsonStr);
		Apple appleObject = JsonConvert.DeserializeObject<Apple>(JsonConvert.SerializeObject(jsonJObject["Apple"]));
		Debug.Log(appleObject.breed);

运行结果如下:
在这里插入图片描述


http://www.kler.cn/news/317468.html

相关文章:

  • 定制智慧科技展厅方案:哪些细节是成功的秘诀?
  • 基于报位时间判断船舶设备是否在线,基于心跳时间判断基站网络是否在线
  • Android String资源文件中,空格、换行以及特殊字符如何表示
  • 循环遍历把多维数组中的某个值改成需要的值
  • 【计算机网络 - 基础问题】每日 3 题(十一)
  • 《深度学习》—— PyTorch的介绍及PyTorch的CPU版本安装
  • 把任务管理器里面的vmware usb arbitrition停了,虚拟机一直识别不到手机设备了
  • vue上传预览CAD文件
  • Java中ArrayList和LinkedList的比较
  • 【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【上篇】
  • 第九节 Opencv自带颜色表操作
  • Unity using API openai Error en la solicitud: HTTP/1.1 400 Bad Request
  • 本地搭建我的世界服务器(JAVA)简单记录
  • JSP(Java Server Pages)基础使用
  • 打破网络安全域限制:跨区域文件传输的创新解决方案
  • Unity项目的脚本继承关系
  • 如何编写自己的Arduino库?
  • git reset 命令
  • 封装 WBXpopup 组件
  • 【C#】垃圾回收
  • 项目总结,路径匹配的业务逻辑
  • Docker使用指南
  • HTML常用的文本标签
  • Docker + Win 10 学习记录
  • OpenAI GPT o1技术报告阅读(3)-英文阅读及理解
  • 828华为云征文 | 云服务器Flexus X实例:RAG 开源项目 FastGPT 部署,玩转大模型
  • 数据结构-C语言实现线性表的顺序存储结构
  • Python Web日志管理与监控实践指南
  • OpenCV特征检测(12)检测图像中的潜在角点函数preCornerDetect()的使用
  • 使用ffmpeg实现音视频文件格式转换