如何从C#中的JSON字符串中获取一些值?

时间:2013-07-12 14:42:23

标签: c# json

我有一个字符串,我想从中获取一些值。

我的字符串似乎是:

字符串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}"

不幸的是,有一种情况是字符串将采用相同的概念,但没有一些参数:

STRING3:

"{\r\n   \"id\": \"100000390001929\",
  \r\n   \"last_name\": \"\\u05d1\\u05e8\\u05d5\\u05e9\",
  \r\n   \"gender\": \"female\",
  \r\n   \"locale\": \"he_IL\"\r\n}"

如何获取以下内容的值:idfirst_namelast_namegenderlocale

任何帮助表示赞赏!

4 个答案:

答案 0 :(得分:86)

您的字符串是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);

快乐的编码!

答案 1 :(得分:11)

以下代码对我有用。

removeFolder(child)

答案 2 :(得分:5)

创建一个这样的类:

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);
}

答案 3 :(得分:0)

我的字符串

var obj = {“状态”:0,“数据”:{“ guid”:“”,“ invitationGuid”:“”,“ entityGuid”:“ 387E22AD69-4910-430C-AC16-8044EE4A6B24443545DD”},“扩展程序”:null}

以下代码获取GUID:

var userObj = JObject.Parse(obj);

var userGuid = Convert.ToString(userObj [“ Data”] [“ guid”]);