• Newtonsoft 解析Json 序列化和反序列化


    经常用到Newtonsoft 去解析json字符串,这里记录一下供大家学习

    首先提供一个json的文本 (不会写的请百度,这里提供一个例子用来测试)

    {
    "width": 50,
    "height": 20,
    "info": [{
    "line": "1,2,3;4,5,6"
    }, {
    "line": "1,2,3;4,5,7"
    }, {
    "line": "1,2,3;4,5,8"
    }, {
    "line": "1,2,3;4,5,9"
    }, {
    "line": "1,2,3;4,5,10"
    }]
    }

     1.读取json里面的信息:  

    引用命名空间(多余的可以删除)

    using System.Collections;
    using System.Collections.Generic;
    using System.Text;
    using UnityEngine;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;
    using System.Linq;

     public List<Vector3> coordinateInfo = new List<Vector3>();    //用来接收解析过的坐标信息

        /// <summary>
        /// /解析Json坐标文本信息
        /// </summary>
        /// <param name="str0">json文本信息</param>
        public void AnalysisJsonInfo(string str0)
        {
    
            JObject jObject = JsonConvert.DeserializeObject<JObject>(str0);
    
            string width = jObject["width"].Value<string>();
    
            string height = jObject["height"].Value<string>();
    
            string info = jObject["info"][0]["line"].ToString();
    
            Debug.LogError(width);
            Debug.LogError(height);
            Debug.LogError(info);
            Debug.LogError(jObject["info"].Count());
    
            foreach (var item in jObject["info"])
            {
                Debug.Log(item["line"]);
    
                string tmp = item["line"].ToString();
    
                string[] tmpsplt = tmp.Split(';');
                for (int i = 0; i < tmpsplt.Length; i++)
                {
    
                    string[] num = tmpsplt[i].Split(',');
    
                    float x = float.Parse(num[0]);
                    float y = float.Parse(num[1]);
                    float z = float.Parse(num[2]);
                    Vector3 tmpVec = new Vector3(x, y, z);
                    coordinateInfo.Add(tmpVec);
                }
            }
        }

    好了,运行我们的unity 可以看到已经成功将坐标信息添加到我们的 coordinateInfo 里面

    2.如何将我们需要的信息作为json来传递?

    首先写一个来作为信息传递的类

    public class SendClassInfo {
    
        public string id; //唯一id
        public string httpInfo;// 上传地址
        public string versionNumber;//版本号
    
    
    }

    这里我需要传递三个参数,当然你也可以自行添加

    如何传递?

    我们通过   JsonConvert.SerializeObject()  来反序列化

       public void SendTest()
        {
            SendClassInfo sendClassInfo = new SendClassInfo();
            sendClassInfo.id = "465416541321";
            sendClassInfo.httpInfo = "https://home.cnblogs.com/u/lk95";
            sendClassInfo.versionNumber = "1.0";
    string tmphttpInfo = JsonConvert.SerializeObject(sendClassInfo); Debug.LogError(tmphttpInfo); }

      运行unity ,可以看到打印出来:{"id":"465416541321","httpInfo":"https://home.cnblogs.com/u/lk95","versionNumber":"1.0"}

    好了,这里已经写完了,如果感到有用,请动一下您的小手点个赞。

  • 相关阅读:
    CTF---隐写术入门第二题 小苹果
    文件上传
    文件读取
    sqlmap之绕过waf思路
    【小技巧分享】如何通过微博图片进行社工Po主
    Windows 11恢复传统右键菜单-2021.10.5正式版
    sql注入之Oracle注入
    CTF之buuctf
    常见sql注入payload
    信息收集之Github
  • 原文地址:https://www.cnblogs.com/lk95/p/14593268.html
Copyright © 2020-2023  润新知