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");  
    }  
}  
相关推荐
_Kayo_4 小时前
VUE2 学习笔记6 vue数据监测原理
vue.js·笔记·学习
chenchihwen4 小时前
大模型应用班-第2课 DeepSeek使用与提示词工程课程重点 学习ollama 安装 用deepseek-r1:1.5b 分析PDF 内容
人工智能·学习
超浪的晨4 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
悠哉悠哉愿意6 小时前
【电赛学习笔记】MaxiCAM 项目实践——与单片机的串口通信
笔记·python·单片机·嵌入式硬件·学习·视觉检测
快乐肚皮6 小时前
ZooKeeper学习专栏(五):Java客户端开发(原生API)详解
学习·zookeeper·java-zookeeper
慕y2746 小时前
Java学习第七十二部分——Zookeeper
java·学习·java-zookeeper
★YUI★7 小时前
学习游戏制作记录(剑投掷技能)7.26
学习·游戏·unity·c#
蓝桉8028 小时前
opencv学习(图像金字塔)
人工智能·opencv·学习
rannn_1118 小时前
Java学习|黑马笔记|Day23】网络编程、反射、动态代理
java·笔记·后端·学习
go54631584659 小时前
中文语音识别与偏误检测系统开发
开发语言·人工智能·学习·生成对抗网络·数学建模·语音识别