VRChat Udon DataToken&VRCJson 食用指南
VRChat Udon DataToken&VRCJson 食用指南
VRC JSON
VRChat Json官方解释链接
概念解释
Json——数据格式
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,我们可以通过VRCJson反序列化来将其转换成DataToken,相对的也可以通过序列化为符合Json标准数据格式的Json文件。
DataToken——数据令牌
数据令牌会储存数据——每个 token 存储一个且仅存储一个变量。一般我们不会直接使用DataToken的定义,而是将其转换为字典或者列表来使用。额外的使用方式我们在这里不作详细解释,需要详细请访问DataToken
DataDdictionaries——数据字典
数据字典是一种特殊的数据令牌使用方式。我们可以通过一个String值作为“键”来提取内部储存的数据。我们可以通过一段小代码来形容。
public DataDictionary DefectData;
public void NewDictionary()
{
//新建字典
DefectData = new DataDictionary;
}
public void AddDictionary()
{
//新建一个数据字典——键名为Key 数据为String类型的Value
DefectData.Add("Key", "Value");
//新建一个数据字典——键名为Key 数据为String类型的1234
DefectData.Add("Int", "1234");
}
public void LoadValue()
{
//尝试读取键名为Key下DataToken数据
DefectData.TryGetValue("Key", out DataToken DataString);
//将DataToken转换为String值
String StringValue = DataString.Sting;
//尝试读取键名为Int下DataToken数据
DefectData.TryGetValue("Int", out DataToken DATAInt);
//将DataToken转换为String值,然后通过TryParse转换为Int值
int IntValue = DATAInt.Int;
}
在上文中,我们通过NewDictionary事件新建了一个数据字典
请注意——DataToken类的东西都需要在运行时执行初始化。
然后我们通过AddDictionary事件为新建的字典写入了两个键名以及对应的数据,键名分别是Key以及Int。
我们可以观察得到,基本来说Dictionary是通过一个String值作为键名储存一个数据。需要注意的是,实际上DataToken是可以储存Object类型,然后再Object类中继续封装多个数据,但是一旦存储了Object类的数据,将会导致这个字典无法序列化为Json。
再然后我们通过LodeValue事件来尝试读取新加入的数据,我们可以通过调用TryGetValue(键名,输出到的数据令牌)来获取数据
对于DataToken转换为具体数值,我们拥有两种方法
1:通过Tostring得到String值之后再通过TryParse来进行转换
优点:稳定不宜爆炸,可以设置多个代码来保护代码安全,所有可以通过这个方法提取数据的DataToken都肯定可以被序列化
缺点:复杂且看上去奇奇怪怪
2:直接通过DataToken.类型的方式来提取
优点:最正确的提取方式,最应该使用的方法
缺点:类型不正确直接爆炸,安全性约等于0。
DataList——数据列表