Unity使用Newtonsoft.Json插件实现XML与JSON数据的互转

插件介绍

  • 介绍

Json.Net是一个读写Json效率比较高的.Net框架,.Json.Net 使得在.Net环境下使用Json更加简单。通过Linq To JSON可以快速的读写Json,通过JsonSerializer可以序列化你的.Net对象。让你轻松实现.Net中所有类型(对象,基本数据类型等)和Json的转换。

  • 特点

高性能:比.NET内置的JSON序列化器更快
编写缩进的、易于阅读的JSON
JSON和XML可以互转
支持:net Standard 2.0,。net 2,。net 3.5,。net 4,。net 4.5, Silverlight, Windows Phone和Windows 8 Store

Unity中使用Newtonsoft.Json进行xml与json互转

搭建demo场景

在这里插入图片描述

编写脚本实现json与xml互转的方法

test脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml;
using UnityEngine.UI;

public class test : MonoBehaviour 
{
    
    
    public Button JSONwriterBtn;
    public Button XMLwriterBtn;
    private string xmlPath;
    private string jsonPath;
    public Text xmlText;
    public Text jsonText;
    XmlDocument document;

    private void Start()
    {
    
    
        xmlPath = Application.dataPath + "/data/question.xml";
        jsonPath = Application.dataPath + "/data/question.json";
        document = new XmlDocument();
        document.Load(xmlPath);//解析xml数据
        xmlText.text = document.InnerXml;
        JSONwriterBtn.onClick.AddListener(XmlToJson);
        XMLwriterBtn.onClick.AddListener(JsonToXml);
    }
    /// <summary>
    /// xml转json的方法
    /// </summary>
    public void XmlToJson()
    {
    
    
        string jsonStr = Newtonsoft.Json.JsonConvert.SerializeXmlNode(document, Newtonsoft.Json.Formatting.Indented,false);//数据序列化为Json字符串
        jsonText.text = jsonStr;
        System.IO.File.WriteAllText(jsonPath, jsonStr);//将转换过来的json数据写入json文件
    }
    /// <summary>
    /// json转xml的方法
    /// </summary>
    public void JsonToXml()
    {
    
    
        string path= Application.dataPath + "/data/toxml.xml";
        XmlDocument xml = Newtonsoft.Json.JsonConvert.DeserializeXmlNode(jsonText.text, "");//json数据反序列化为xml数据
        xml.Save(path);
    }
}

脚本里首先把question.xml数据加载到XmlDocument对象里,然后调用Newtonfost.JSON包方法JsonConvert.SerializeXmlNode将xml文档转换为json格式的文本字符串,然后显示到Text上,并且通过IO流将json数据写入到question.json文件中,后面再将json字符串转为xml字符串,保存到toxml.xml文件中。

这里我挂载在panel上,记得拖拽对象,不然会报空哦!
在这里插入图片描述

demo演示效果

请添加图片描述
原始xml文件:
在这里插入图片描述

转换的json文件:
在这里插入图片描述
转换的xml文件:
在这里插入图片描述

demo源工程

demo下载
Newtonsoft.Json插件可在demo工程中找到,有问题可以问题哦,喜欢记得一键三连呀!谢谢关注哦。

关于Newtonsoft.Json插件的获取及其一些常用方法

插件获取

1、从官网获取Newtonsoft.Json插件
官网地址
在这里插入图片描述
更多功能用法也可查看官方文档:
官方文档
2、本文用到的演示demo工程有Newtonsoft.Json插件,但可能不是最新的。
3、在Visual Studio中,可以通过NuGet Package Manager获得:
在Visual Studio菜单中,进入Tools/NuGet Package Manager/Manager NuGet Packages for Solution。选择Newtonsoft.json包,选择你所需要的版本并为你的unity工程进行安装。
在这里插入图片描述

常用方法

  • 对象序列化Json字符串:

JsonConvert.SerializeObject(object value):
Json字符串反序列化为对象:

JsonConvert.DeserializeObject(string value):
JsonConvert.DeserializeObject(string value)

  • XML序列化为Json字符串:

JsonConvert.SerializeXmlNode(XmlNode node)
Json反序列化为XML对象:

JsonConvert.DeserializeXmlNode(string value)

  • 参数formatting指的是Json字符串格式有没有缩进

猜你喜欢

转载自blog.csdn.net/qq_42437783/article/details/124316340