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");  
    }  
}  
相关推荐
承渊政道1 分钟前
【Python学习】(了解Python背景知识、搭建 Python 环境以及安装PyCharm)
python·学习·pycharm·搭建python环境
东京老树根11 分钟前
SAP学习笔记 - MM模块06 - 库存物料,消耗物料,物料类型NLAG,如何确定会计科目,无物料信息记录(通过物料组),排序字符串,消耗物料的收货
学习
茯苓gao13 小时前
嵌入式开发笔记:CANopen相关移位运算与通信协议术语详解
网络·嵌入式硬件·学习·信息与通信
HERR_QQ16 小时前
强化学习的数学原理 学习笔记
人工智能·笔记·学习·自动驾驶
MartinYeung517 小时前
[论文学习]DP-Fusion:面向大语言模型的令牌级差分隐私推理-深度解析
人工智能·学习·语言模型
zwenqiyu18 小时前
非线性字符串数据结构串讲
数据结构·c++·学习·算法
MartinYeung519 小时前
[论文学习]SecureGate:通过令牌级门控学习何时安全地揭示PII-深度解析
学习·安全
大鱼>20 小时前
超参数调优进阶:Optuna/Bayesian/Early Stopping
人工智能·学习·机器学习·聚类
liuyicenysabel20 小时前
多服务上线日记二:
服务器·笔记·学习
小弥儿21 小时前
GitHub今日热榜 | 2026-07-05:阿里巴巴浏览器Agent上榜
学习·开源·github