LitJson-Json字符串转对像时:整型与字符串或字符串转:整型进的类型不一致的处理

2024-01-09 21:52

本文主要是介绍LitJson-Json字符串转对像时:整型与字符串或字符串转:整型进的类型不一致的处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


Json数据格式是大家在游戏开中常量用的一种数据格式,某种程度上可以说是必备的。对unity开发来说,LitJson这个json库应该是被使用最多的json库了。

问题描述

今天说要的其中的这个api: JsonMapper.ToObject(json),这个api应该是大家很常用的了,它的作用是将json string反序列化成一个类对象。
要求一json结构中的字段的类型和类型结构中的对应字段的类型一致,不然后转换就会出错。

如:现在有这样一个情况!

{"age":"18","count":100
}
public class TestClass
{public int age { get; set; }public string count { get; set; }
}

大家可看到,类中字段的类型int与string刚好都是反的。int->string会报错,string->int也有报错。
在这里插入图片描述

但我们希望能兼容这种情况。
其它litjson这个库给我提供了处理文案的,它允许我们自定类型映射处理。
这是这两个方法
在这里插入图片描述
下面我这里只展示反序列化的处理方法,一般也只要这个就ok了。而且只处理string->int 和 int->string的实现,其它的实现用到的情况比较少,如果有需要可以参加扩展.

上代码

只要是app初始时,调用LitJsonUtils.Init()即可

using System;
using LitJson;namespace Main
{public static class LitJsonUtils{// static LitJsonUtils()// {//     RegisterCustomImporters();// }public static void Init(){RegisterCustomImporters();}/// <summary>/// 自定类类型 反序列化/// 反序列化/// json->object/// type1->type2/// </summary>public static void RegisterCustomImporters (){// string -> int (各种整形)JsonMapper.RegisterImporter<string, sbyte>(input =>{if (string.IsNullOrEmpty(input)){return 0;}return Convert.ToSByte(input);});JsonMapper.RegisterImporter<string, byte>(input =>{if (string.IsNullOrEmpty(input)){return 0;}return Convert.ToByte(input);});JsonMapper.RegisterImporter<string, ulong>(input =>{if (string.IsNullOrEmpty(input)){return 0;}return Convert.ToUInt64(input);});JsonMapper.RegisterImporter<string, long>(input =>{if (string.IsNullOrEmpty(input)){return 0;}return Convert.ToInt64(input);});JsonMapper.RegisterImporter<string, short>(input =>{if (string.IsNullOrEmpty(input)){return 0;}return Convert.ToInt16(input);});JsonMapper.RegisterImporter<string, ushort>(input =>{if (string.IsNullOrEmpty(input)){return 0;}return Convert.ToUInt16(input);});JsonMapper.RegisterImporter<string, int>(input =>{if (string.IsNullOrEmpty(input)){return 0;}return Convert.ToInt32(input);});JsonMapper.RegisterImporter<string, uint>(input =>{if (string.IsNullOrEmpty(input)){return 0;}return Convert.ToUInt32(input);});// (各种整形)int -> stringJsonMapper.RegisterImporter<sbyte, string>(input => input.ToString());JsonMapper.RegisterImporter<byte, string>(input => input.ToString());JsonMapper.RegisterImporter<ulong, string>(input => input.ToString());JsonMapper.RegisterImporter<long, string>(input => input.ToString());JsonMapper.RegisterImporter<short, string>(input => input.ToString());JsonMapper.RegisterImporter<ushort, string>(input => input.ToString());JsonMapper.RegisterImporter<int, string>(input => input.ToString());JsonMapper.RegisterImporter<uint, string>(input => input.ToString());}}
}

测试代码

using LitJson;
using Main;
using UnityEngine;public class MyTest : MonoBehaviour
{private void Start(){Test();}static void Test(){LitJsonUtils.Init();string json = "{\"age\":\"18\",\"count\":100}";TestClass myClass = JsonMapper.ToObject<TestClass>(json);Debug.Log(myClass!=null);if (myClass != null){Debug.Log($"age={myClass.age} count = {myClass.age}");}}class TestClass{public int age { get; set; }public string count { get; set; }}}

在这里插入图片描述

各位看官,打赏个1元吧

请添加图片描述

这篇关于LitJson-Json字符串转对像时:整型与字符串或字符串转:整型进的类型不一致的处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/588551

相关文章

MySQL 索引简介及常见的索引类型有哪些

《MySQL索引简介及常见的索引类型有哪些》MySQL索引是加速数据检索的特殊结构,用于存储列值与位置信息,常见的索引类型包括:主键索引、唯一索引、普通索引、复合索引、全文索引和空间索引等,本文介绍... 目录什么是 mysql 的索引?常见的索引类型有哪些?总结性回答详细解释1. MySQL 索引的概念2

Python调用LibreOffice处理自动化文档的完整指南

《Python调用LibreOffice处理自动化文档的完整指南》在数字化转型的浪潮中,文档处理自动化已成为提升效率的关键,LibreOffice作为开源办公软件的佼佼者,其命令行功能结合Python... 目录引言一、环境搭建:三步构建自动化基石1. 安装LibreOffice与python2. 验证安装

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

C# $字符串插值的使用

《C#$字符串插值的使用》本文介绍了C#中的字符串插值功能,详细介绍了使用$符号的实现方式,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录$ 字符使用方式创建内插字符串包含不同的数据类型控制内插表达式的格式控制内插表达式的对齐方式内插表达式中使用转义序列内插表达式中使用

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引