LitJson

序列化API:JsonMapper.ToJson(object);


反序列化API:JsonMapper.ToObject<T>(string);

注意:JsonMapper.ToObject(string);如果不指定转换类型结果是JsonData类型并非T类型!


JsonType枚举值:

cs 复制代码
public enum JsonType  
{  
    None,     // 未设置类型  
    Object,   // JSON对象类型 {}  
    Array,    // JSON数组类型 []  
    String,   // 字符串类型  
    Int,      // 整数类型  
    Long,     // 长整数类型  
    Double,   // 双精度浮点数类型  
    Boolean   // 布尔类型  
}  

JsonData操作:

  • [] 操作符 - 访问属性
  • Contains() - 检查键存在
  • SetJsonType() - 设置类型
  • Add() - 添加数组元素

SetJsonType()****必须使用的情况:

  • 当需要使用键值对(对象)
  • 当需要使用Add方法(数组)
  • 创建嵌套结构时

不需要使用SetJsonType()的情况**:**

  • 直接赋值基本类型(字符串、数字、布尔值等)

记住:尽管直接赋值基本类型不需要SetJsonType(),但如果要创建对象或数组结构,SetJsonType()是必需的,否则会导致运行时异常。这是LitJson的设计特点,需要明确指定复杂数据结构的类型。


类型相关:

  • IsInt, IsString, IsArray 等 类型检查
  • GetJsonType() 获取类型

容错处理:

  • try-catch 包装 //TODO
  • 类型安全转换 //TODO
  • 数据验证 //TODO

最佳处理:

  • 创建新的JsonData对象后立即设置类型
  • 创建嵌套结构时不要忘记为每层设置类型
  • 考虑使用辅助方法确保类型设置
  • 在进行任何操作前验证类型是否正确

基础API示例

cs 复制代码
using LitJson;  

public class LitJsonBasicAPI  
{  
    void BasicExamples()  
    {  
        // 1. 对象序列化为JSON字符串  
        PlayerData player = new PlayerData();  
        string json = JsonMapper.ToJson(player);  

        // 2. JSON字符串反序列化为对象  
        PlayerData loadedPlayer = JsonMapper.ToObject<PlayerData>(json);  

        // 3. JSON字符串转换为JsonData  
        JsonData jsonData = JsonMapper.ToObject(json);  

        // 4. 直接创建JsonData  
        JsonData newData = new JsonData();  
    }  
}  

JsonData操作API示例

cs 复制代码
public class JsonDataOperations  
{  
    void JsonDataExample()  
    {  
        JsonData data = new JsonData();  

        // 1. 设置值  
        data["name"] = "Player1";  
        data["level"] = 10;  
        data["isActive"] = true;  

        // 2. 获取值  
        string name = (string)data["name"];  
        int level = (int)data["level"];  
        bool isActive = (bool)data["isActive"];  

        // 3. 检查键是否存在  
        bool hasName = data.Contains("name");  

        // 4. 获取类型  
        JsonType type = data.GetJsonType();  

        // 5. 设置类型  
        data.SetJsonType(JsonType.Array);  

        // 6. 数组操作  
        data.Add(123);  
        data.Add("string");  
    }  
}  
相关推荐
Wu Liuqi35 分钟前
【大模型学习4】大语言模型(LLM)详解
人工智能·学习·语言模型·大模型
CarmenHu1 小时前
RAFT微调学习笔记
笔记·学习
QiZhang | UESTC1 小时前
JAVA算法练习题day67
java·python·学习·算法·leetcode
d111111111d2 小时前
STM32外设学习--ADC模数转换器--笔记
笔记·stm32·单片机·嵌入式硬件·学习
AC是你的谎言2 小时前
网络层和数据链路层
linux·网络·学习·智能路由器
Miki Makimura2 小时前
KVStore 多行文章型键值扩展解析:切片存储与客户端多行交互
运维·服务器·网络·学习
笨鸟笃行4 小时前
英语学习——单词篇(第十七天)
学习
d111111111d4 小时前
STM32TIM定时器外设学习,输出比较模式(舵机,驱动直流电机)
笔记·stm32·单片机·嵌入式硬件·学习
立志成为大牛的小牛4 小时前
数据结构——四十、折半查找(王道408)
数据结构·学习·程序人生·考研·算法
东方欲晓w5 小时前
Git高效开发:常用命令速查指南
git·stm32·学习