Newtonsoft.Json基础与log4net应用详解

5星 · 超过95%的资源 需积分: 50 6 下载量 164 浏览量 更新于2024-09-14 收藏 128KB PDF 举报
本文是一篇关于Newtonsoft.Json的使用总结,结合log4net的上下文,作者从初识JSON的基本概念出发,详细介绍了在.NET开发中如何利用Json.NET库实现数据的序列化和反序列化。以下是本文的主要知识点: 1. **JSON基础知识**: - JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,设计用于在客户端和服务器之间交换数据。它以易于人阅读和机器解析的方式提供数据,其语法基于JavaScript,但独立于特定编程语言。 2. **JSON的应用场景**: - 在ASP.NET中,JSON常用于Ajax交互,将服务器返回的数据以JSON格式传递给前端,便于前端处理和展示。 3. **Json.NET在.NET 2.0中的应用**: - 当.NET框架版本较低时,如.NET 2.0,Json.NET作为第三方库可以帮助开发者轻松地处理JSON,包括序列化.NET对象为JSON字符串和反序列化JSON字符串为.NET对象。 4. **处理日期问题**: - Newtonsoft.Json提供了对日期格式化的支持,可以定制日期在序列化和反序列化过程中的表现形式,避免默认的日期格式可能导致的问题。 5. **JSON修饰标签和日期序列化**: - 学习如何使用特定的修饰标签或属性,如`[JsonConverter(typeof(DateTimeConverter))]`,来处理日期类型的序列化,确保跨平台兼容性。 6. **JSON集合序列化**: - 支持数组和集合的序列化,可以将.NET的List、Dictionary等数据结构转换为JSON数组。 7. **JSON回调函数**: - 提供回调函数的使用方法,例如`JsonConvert.SerializeObject(object, Formatting.None, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() })`,允许自定义序列化过程。 8. **错误处理**: - 学习如何处理Json.NET在序列化过程中可能出现的错误,如数据类型不匹配或无效的JSON格式。 9. **实战小练**: - 通过实际示例演示如何将.NET对象转换为JSON字符串,并在实际项目中应用Json.NET。 这篇文章旨在帮助.NET开发者更好地理解和使用Json.NET处理数据交换,尤其是在ASP.NET项目中,以及解决日期序列化和错误处理等常见问题。通过学习这些内容,开发者能够提高代码的可读性和可维护性,优化前后端通信效率。

using System.Collections; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI; using Newtonsoft.Json.Linq; using System.Collections.Generic; using System; public class KN_Data : MonoBehaviour { // Start is called before the first frame update public Dropdown dropdown; IEnumerator Start() { // 定义接口地址 string url = "http://158.58.50.21:8886/baseinfo/queryBaseInfo"; // 构造请求参数 var requestData = new { countryid = 3, areaid = 22, lineid = 27, metroid = 279, carriageid = "" }; string json = JsonMapper.ToJson(requestData); // 构造请求 UnityWebRequest request = new UnityWebRequest(url, "POST"); byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(json); request.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw); request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer(); request.SetRequestHeader("Content-Type", "application/json"); // 发送请求 yield return request.SendWebRequest(); // 处理返回结果 if (request.isNetworkError) { Debug.Log(request.error); resultText.text = request.error; } else { string json = www.downloadHandler.text; // 解析json数据,获取下拉选项框的内容 List<string> options = new List<string>(); JObject jo = JObject.Parse(json); JArray ja = (JArray)jo["data"]; for(int i = 0; i < ja.Count; i++) { JObject item = (JObject)ja[i]; options.Add(item["carriagename"].ToString()); } // 将内容设置到下拉选项框中 Dropdown dropdown = GetComponent<Dropdown>(); dropdown.ClearOptions(); dropdown.AddOptions(options); } } }修改代码中的错误

2023-06-11 上传