前言

Newtonsoft.Json介绍

Netonsoft.Json 是一款 .NET 适用的 Json 插件,可以将 C# 中常用的数据类型序列化成 json 格式,使用时再反序列化对应的类型即可,包括 Dictionary、List 甚至 class 类都能很简单的进行序列化和反序列化,十分好用。

一、下载

  1. 进入官网( https://www.newtonsoft.com/json )点击 Download。
    在这里插入图片描述
  2. 直接点击 Json 跳转到 github( https://github.com/JamesNK/Newtonsoft.Json/releases ) 。
  3. 跳转到 github 后可选择下载 dll(第一个zip) 或者源码。
    在这里插入图片描述

二、导入项目

在 u3d 工程中创建文件夹 Plugins ,将下载的 zip 中 Bin/netXX/Newtonsoft.Json.dll 以及 .xml 文件拖到 u3d 工程 Plugins 中,其中 xml 为注释,可拖可不拖,反正官网有文档和小例子。

三、使用

  1. 使用前首先引用 using Newtonsoft.Json

  2. 简单举一个含有Dictionary 的 model 小例子

    using System.IO;
    using UnityEngine;
    using UnityEditor;
    // 别忘了引入,或直接使用,用快捷键补齐
    using Newtonsoft.Json;
    using System.Collections.Generic;

    public class TestJson
    {

    [MenuItem("Tools/Model2Json", false, 923)]
    public static void Model2Json()
    {
        // 初始化一个测试数据
        VersionInfo versionInfo = new VersionInfo();
    
        versionInfo.versionId = "1.0.2";
        versionInfo.nameAndMd5.Add("human", "403fd551fa2515e262e34d373a6f9b6e");
        versionInfo.nameAndMd5.Add("animal", "af57576da81d5d3ce45807ac11234de6");
        versionInfo.nameAndMd5.Add("plant", "efd6aa8633c36b26e8b25e703db396ba");
    
        // 序列化
        string json = JsonConvert.SerializeObject(versionInfo);
        Debug.Log("JsonStr : " + json);
        // 反序列化
        VersionInfo deserializeVersionInfo = JsonConvert.DeserializeObject<VersionInfo>(json);
        Debug.Log("versionId : " + deserializeVersionInfo.versionId);
        Debug.Log("human's MD5 : " + deserializeVersionInfo.nameAndMd5["human"]);
    
        // 输出 json 文件
        string jsonPath = "Assets/product.json";
    
        // 写入文件
        File.WriteAllText(jsonPath, JsonConvert.SerializeObject(versionInfo));
        // 读文件
        string tmpFile = File.ReadAllText(jsonPath);
        // 此处可 反序列化为 model 供后续使用
        Debug.Log("JsonStr : " + tmpFile);
    }
    
    public  class VersionInfo
    {
        public string versionId;
        public Dictionary<string, string> nameAndMd5 = new Dictionary<string, string>();
    }

    }

测试结果:
在这里插入图片描述

参考来源:[ U3D 极其好用的Json插件NewtonJson ]


to be continued…