序列化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");
}
}