C#實現(xiàn)JsonString與Object互轉(zhuǎn)
主要講述了兩種方法的轉(zhuǎn)換,最后提供了格式化輸出JsonString字符串。
需要引用程序集 System.Web.Extensions.dll、Newtonsoft.Json.dll
System.Web.Extensions.dll可直接在程序集中引用,Newtonsoft.Json.dll需要在NuGet中下載引用。
詳細代碼:
using System;
using System.IO;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Web.Script.Serialization;
namespace TestAutomationUtility.Models
{
/// <summary>
/// <para>需要引用程序集 System.Web.Extensions.dll、Newtonsoft.Json.dll</para>
/// <para>提供了兩種方式轉(zhuǎn)換</para>
/// </summary>
internal class ConvertToJsonString
{
/// <summary>
/// 把json轉(zhuǎn)集合
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JsonStr"></param>
/// <returns></returns>
public List<T> JSONStringToList<T>(string JsonStr)
{
JavaScriptSerializer Serializer = new JavaScriptSerializer();
List<T> objs = Serializer.Deserialize<List<T>>(JsonStr);
return objs;
}
/// <summary>
/// 把json轉(zhuǎn)對象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JsonStr"></param>
/// <returns></returns>
public T JSONStringToEntity<T>(string JsonStr)
{
JavaScriptSerializer Serializer = new JavaScriptSerializer();
T objs = Serializer.Deserialize<T>(JsonStr);
return objs;
}
/// <summary>
/// 把對象轉(zhuǎn)為json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <returns></returns>
public string ToString<T>(T t)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonString = serializer.Serialize(t);
return jsonString;
}
/// <summary>
/// 把list集合轉(zhuǎn)為json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <returns></returns>
public string ToString<T>(List<T> ts)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonString = serializer.Serialize(ts);
return jsonString;
}
/// <summary>
/// object轉(zhuǎn)string
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public string ToStringObject(Object obj)
{
string json = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
return json;
}
/// <summary>
/// json轉(zhuǎn)Entity
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonString"></param>
/// <returns></returns>
public T StringToEntity<T>(string jsonString)
{
T person = JsonConvert.DeserializeObject<T>(jsonString);
return person;
}
/// <summary>
/// json轉(zhuǎn)List
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonString"></param>
/// <returns></returns>
public IList<T> StringToEntitys<T>(string jsonString)
{
IList<T> person = JsonConvert.DeserializeObject<IList<T>>(jsonString);
return person;
}
/// <summary>
/// 格式化輸出json字符串
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
private string ConvertJsonString(string json)
{
JsonSerializer serializer = new JsonSerializer();
TextReader tr = new StringReader(json);
JsonTextReader jtr = new JsonTextReader(tr);
object obj = serializer.Deserialize(jtr);
if (obj != null)
{
StringWriter textWriter = new StringWriter();
JsonTextWriter jsonWriter = new JsonTextWriter(textWriter)
{
Formatting = Formatting.Indented,
Indentation = 4,
IndentChar = ' '
};
serializer.Serialize(jsonWriter, obj);
return textWriter.ToString();
}
else
{
return json;
}
}
}
}知識拓展
C# JSONObject實現(xiàn)數(shù)據(jù)轉(zhuǎn)換
在C#中,你可以使用Newtonsoft.Json庫(也稱為Json.NET)來處理JSON數(shù)據(jù)。首先,你需要安裝這個庫,可以通過NuGet包管理器來安裝:
Install-Package Newtonsoft.Json
安裝完成后,你可以使用以下代碼示例來實現(xiàn)JSON對象的數(shù)據(jù)轉(zhuǎn)換:
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace JsonToCSharpObject
{
class Program
{
static void Main(string[] args)
{
string jsonString = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";
// 將JSON字符串轉(zhuǎn)換為C#對象
Person person = JsonConvert.DeserializeObject<Person>(jsonString);
Console.WriteLine($"Name: {person.Name}");
Console.WriteLine($"Age: {person.Age}");
Console.WriteLine($"City: {person.City}");
// 將C#對象轉(zhuǎn)換回JSON字符串
string jsonFromObject = JsonConvert.SerializeObject(person);
Console.WriteLine($"JSON from object: {jsonFromObject}");
}
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
}
}
在這個示例中,我們首先定義了一個名為Person的C#類,該類具有與JSON對象中的屬性相對應(yīng)的屬性。然后,我們使用JsonConvert.DeserializeObject方法將JSON字符串轉(zhuǎn)換為Person對象。接下來,我們使用Console.WriteLine輸出轉(zhuǎn)換后的數(shù)據(jù)。
最后,我們使用JsonConvert.SerializeObject方法將Person對象轉(zhuǎn)換回JSON字符串,并將其輸出到控制臺。
到此這篇關(guān)于C#實現(xiàn)JsonString與Object互轉(zhuǎn)的文章就介紹到這了,更多相關(guān)C# JsonString Object互轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# Process調(diào)用外部程序的實現(xiàn)
這篇文章主要介紹了C# Process調(diào)用外部程序的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
C#實現(xiàn)高性能檢索文檔的5大核心技巧總結(jié)
C#如何突破10GB文檔的檢索瓶頸,是優(yōu)化算法,還是升級硬件,內(nèi)存與磁盤如何平衡,下面小編就為大家簡單分享5個C#高性能檢索文檔的核心技巧吧2025-10-10
C#鉤子Hook監(jiān)聽鍵盤鼠標事件實現(xiàn)窗體自動關(guān)閉
鉤子(Hook)的作用主要體現(xiàn)在監(jiān)視和攔截系統(tǒng)或進程中的各種事件消息,并進行自定義處理,本文主要介紹了C#如何利用鉤子Hook監(jiān)聽鍵盤鼠標事件實現(xiàn)窗體自動關(guān)閉功能,感興趣的可以了解下2025-01-01
C#調(diào)用釘釘API發(fā)送通知的實現(xiàn)示例
本文介紹了使用C#調(diào)用釘釘API實現(xiàn)企業(yè)通知推送的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-11-11

