NET问答: 如何使用 C# 直接从 JSON String 中提取特定值 ?
生活随笔
收集整理的這篇文章主要介紹了
NET问答: 如何使用 C# 直接从 JSON String 中提取特定值 ?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
咨詢區
Alon Shmiel:
我有一個 string,現在我想從中提取出一些值,格式大概如下:
string1:
"{\r\n???\"id\":?\"100000280905615\",\r\n?\"name\":?\"Jerard?Jones\",\r\n???\"first_name\":?\"Jerard\",\r\n???\"last_name\":?\"Jones\",\r\n???\"link\":?\"https://www.facebook.com/Jerard.Jones\",\r\n???\"username\":?\"Jerard.Jones\",\r\n???\"gender\":?\"female\",\r\n???\"locale\":?\"en_US\"\r\n}"string2:
"{\r\n???\"id\":?\"100000390001929\",\r\n???\"name\":?\"\\u05d1\\u05d2\\u05e8\\u15dc\\u25d9?\\u05d1\\u05e8\\u05d5\\u05e9\",\r\n???\"first_name\":?\"\\u05d4\\u05d2\\u05e7\\u02dc\\u05d9\",\r\n???\"last_name\":?\"\\u05d1\\u05e8\\u05d5\\u05e9\",\r\n???\"link\":?"https://www.facebook.com/people/\\u05d2\\u05d1\\u05e@\\u05dc\\u05d9-\\u05d1\\u05e8\\u05d4\\u05e9/100000390001929\",\r\n???\"gender\":?\"female\",\r\n???\"locale\":?\"he_IL\"\r\n}"請問我如何從中提取 id,first_name,last_name 等等。。。
回答區
Rubens Mariuzzo:
可以看出你的 string 是一個 json 格式,你可以通過 JSON.NET 將它轉為 object,下面是一個將 string 轉為動態類型的小例子,僅供參考:
string?source?=?"{\r\n???\"id\":?\"100000280905615\",?\r\n?\"name\":?\"Jerard?Jones\",??\r\n???\"first_name\":?\"Jerard\",?\r\n???\"last_name\":?\"Jones\",?\r\n???\"link\":?\"https://www.facebook.com/Jerard.Jones\",?\r\n???\"username\":?\"Jerard.Jones\",?\r\n???\"gender\":?\"female\",?\r\n???\"locale\":?\"en_US\"\r\n}"; dynamic?data?=?JObject.Parse(source); Console.WriteLine(data.id); Console.WriteLine(data.first_name); Console.WriteLine(data.last_name); Console.WriteLine(data.gender); Console.WriteLine(data.locale);Ligabb:
可以使用 DataContractJsonSerializer 類幫你實現 string 到 object 的轉換,首先定義如下類:
public?class?Data {public?string?Id?{get;?set;}public?string?Name?{get;?set;}public?string?First_Name?{get;?set;}public?string?Last_Name?{get;?set;}public?string?Username?{get;?set;}public?string?Gender?{get;?set;}public?string?Locale?{get;?set;} }我不敢100%保證,如果序列化不了,可以在字段上標注 [DataContract] 和 [DataMember],然后就可以序列化和反序列化的操作啦。
private?static?readonly?XmlObjectSerializer?Serializer?=?new?DataContractJsonSerializer(typeof(Data));//?convert?string?to?stream byte[]?byteArray?=?Encoding.UTF8.GetBytes(contents); using(var?stream?=?new?MemoryStream(byteArray)) {(Data)Serializer.ReadObject(stream); }點評區
從 jsonstring 中提取 value,逃不過使用 json序列化器,不過挺有意思的是:.NET曾出現過多個json序列化工具,比如:JavaScriptSerializer,還有針對 WCF 的 DataContractJsonSerializer,還有現在 .netcore3 出來的大一統 System.Text.Json.JsonSerializer ,眼花繚亂是不是哈????
總結
以上是生活随笔為你收集整理的NET问答: 如何使用 C# 直接从 JSON String 中提取特定值 ?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Blazor Server 和 WebA
- 下一篇: .net core ——利用 rosly