我有一个JSON字符串,我不想完全反序列化。我只想反序列化'JSON字符串中的内容。
这是字符串的样子:
"{\"content\":{\"token\":\"*************************\",\"is_verified\":1,\"account_id\":45087,\"is_starter\":0,\"days_left\":1},\"status\":200,\"id\":\"test\",\"method\":\"accounts_login\"}"
我只需要内容对象。所以我需要制作一个可以使这个字符串成为的正则表达式(?):
"{\"token\":\"*************************\",\"is_verified\":1,\"account_id\":45087,\"is_starter\":0,\"days_left\":1}"
最好的方法是什么?
答案 0 :(得分:0)
您可以使用Newtonsoft.Json执行此操作,就像
一样简单var json = "{\'content\':{\'token\':\'*************************\',\'is_verified\':1,\'account_id\':45087,\'is_starter\':0,\'days_left\':1},\'status\':200,\'id\':\'test\',\'method\':\'accounts_login\'}";
var jToken = JToken.Parse(json);
var contentToken = jToken["content"]; //This selects the Json-Node
var content = contentToken.ToObject<YourContentClass>();
答案 1 :(得分:0)
从我的观点来看,最好的方法是在数据层级别反序列化整个JSON字符串。并且,在反序列化为对象后,从另一层中的对象中选择所需的数据:业务层。
本主题中解释了如何将JSON字符串反序列化为对象:Deserialize JSON with C#
public class Rootobject
{
public Content content { get; set; }
public int status { get; set; }
public string id { get; set; }
public string method { get; set; }
}
public class Content
{
public string token { get; set; }
public int is_verified { get; set; }
public int account_id { get; set; }
public int is_starter { get; set; }
public int days_left { get; set; }
}
class Program
{
static void Main(string[] args)
{
string json =
"{\"content\":{\"token\":\"*************************\",\"is_verified\":1,\"account_id\":45087,\"is_starter\":0,\"days_left\":1},\"status\":200,\"id\":\"test\",\"method\":\"accounts_login\"}";
Rootobject rootobject = new JavaScriptSerializer().Deserialize<Rootobject>(json);
Content content = rootobject.content; // Select what you need
System.Console.ReadKey();
}
}