我有一个字符串,我想从中获取一些值.
我的字符串看起来像:
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}"
Run Code Online (Sandbox Code Playgroud)
字符串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}"
Run Code Online (Sandbox Code Playgroud)
不幸的是,有一种情况是字符串将采用相同的概念,但没有一些参数:
STRING3:
"{\r\n \"id\": \"100000390001929\",
\r\n \"last_name\": \"\\u05d1\\u05e8\\u05d5\\u05e9\",
\r\n \"gender\": \"female\",
\r\n \"locale\": \"he_IL\"\r\n}"
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到的值:id,first_name,last_name,gender,locale?
任何帮助赞赏!
Rub*_*zzo 97
您的字符串是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);
Run Code Online (Sandbox Code Playgroud)
快乐的编码!
Ste*_*fan 25
.NET 6 版本使用System.Text.Json
using System;
public class Program
{
public static void Main()
{
var jsonString = @"{ ""id"" : 123 }";
//parse it
var yourObject = System.Text.Json.JsonDocument.Parse(jsonString);
//retrieve the value
var id= yourObject.RootElement
.GetProperty("id");
Console.WriteLine(id);
}
}
Run Code Online (Sandbox Code Playgroud)
要检索嵌套属性,您可以链接调用GetProperty。作为一个更高级的示例:
//access first element of array "persons" get nested property "age"
var age = yourObject.rootElement.GetProperty("persons")[0]
.GetProperty("age");
Run Code Online (Sandbox Code Playgroud)
DKR*_*DKR 16
我的字符串
var obj = {"Status":0,"Data":{"guid":"","invitationGuid":"","entityGuid":"387E22AD69-4910-430C-AC16-8044EE4A6B24443545DD"},"Extension":null}
Run Code Online (Sandbox Code Playgroud)
以下代码获取 guid:
var userObj = JObject.Parse(obj);
var userGuid = Convert.ToString(userObj["Data"]["guid"]);
Run Code Online (Sandbox Code Playgroud)
Muh*_*ais 13
以下代码对我有用.
using System.IO;
using System.Net;
using Newtonsoft.Json.Linq;
Run Code Online (Sandbox Code Playgroud)
小智 6
创建一个这样的类:
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;}
}
Run Code Online (Sandbox Code Playgroud)
(我不是100%肯定,但如果不工作,你就需要使用[DataContract]和[DataMember]对DataContractJsonSerializer.)
然后创建JSonSerializer:
private static readonly XmlObjectSerializer Serializer = new DataContractJsonSerializer(typeof(Data));
Run Code Online (Sandbox Code Playgroud)
和反序列化对象:
// convert string to stream
byte[] byteArray = Encoding.UTF8.GetBytes(contents);
using(var stream = new MemoryStream(byteArray))
{
(Data)Serializer.ReadObject(stream);
}
Run Code Online (Sandbox Code Playgroud)