[英]How to get some values from a JSON string in C#?
我有一個字符串,我想從中獲取一些值。
我的字符串看起來像:
字符串 1:
"{\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}"
字符串2:
"{\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}"
不幸的是,有一種情況是字符串將具有相同的概念,但沒有一些參數:
字符串 3:
"{\r\n \"id\": \"100000390001929\",
\r\n \"last_name\": \"\\u05d1\\u05e8\\u05d5\\u05e9\",
\r\n \"gender\": \"female\",
\r\n \"locale\": \"he_IL\"\r\n}"
如何獲取以下值: id
、 first_name
、 last_name
、 gender
、 locale
?
任何幫助表示贊賞!
您的字符串是JSON格式的,因此您需要將其解析為對象。 為此,您可以使用JSON.NET 。
以下是如何將JSON字符串解析為動態對象的示例:
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);
快樂的編碼!
以下代碼對我有用。
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader responseReader = new StreamReader(responseStream))
{
string json = responseReader.ReadToEnd();
string data = JObject.Parse(json)["id"].ToString();
}
}
}
//json = {"kind": "ALL", "id": "1221455", "longUrl": "NewURL"}
創建一個這樣的類:
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]
為DataContractJsonSerializer
。)
然后創建JSonSerializer
:
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);
}
我的字符串
var obj = {"Status":0,"Data":{"guid":"","invitationGuid":"","entityGuid":"387E22AD69-4910-430C-AC16-8044EE4A6B24443545DD"},"Extension":null}
以下代碼獲取guid:
var userObj = JObject.Parse(obj);
var userGuid = Convert.ToString(userObj["Data"]["guid"]);
使用System.Text.Json
.NET 6 版本
using System;
public class Program
{
public static void Main()
{
var jsonString = @"{ ""Collar Circumference"":39.5678," +
@"""NeckBase Circumference"":42.876}";
//parse it
var yourObject = System.Text.Json.JsonDocument.Parse(jsonString);
//retrieve the value
var circumReference = yourObject.RootElement
.GetProperty("Collar Circumference");
Console.WriteLine(circumReference);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.