C# 拆分JSON字符串的一部分以进行反序列化
我有一个JSON字符串,我不想完全反序列化。我只想反序列化JSON字符串中的内容 以下是字符串的外观:C# 拆分JSON字符串的一部分以进行反序列化,c#,json,regex,C#,Json,Regex,我有一个JSON字符串,我不想完全反序列化。我只想反序列化JSON字符串中的内容 以下是字符串的外观: "{\"content\":{\"token\":\"*************************\",\"is_verified\":1,\"account_id\":45087,\"is_starter\":0,\"days_left\":1},\"status\":200,\"id\":\"test\",\"method\":\"accounts_login\"}" 我只需要内容
"{\"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}"
做这件事最好的方法是什么?你可以用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>();
var json=“{content\':{token\':\'*************************”,\'is\'u verified\':1,\'account\'u id\':45087,\'is\'u starter\':0,\'days\'u left\':1,\'status\'200,\'id\':'test\',\'method\':'accounts\'u login\';
var jToken=jToken.Parse(json);
var contentToken=jToken[“content”]//这将选择Json节点
var content=contentToken.ToObject();
在我看来,最好的方法是在数据层级别反序列化整个JSON字符串。并且,在反序列化到一个对象之后,从另一个层中的对象中选择所需的数据:业务层
本主题介绍了如何将JSON字符串反序列化为对象:
公共类根对象
{
公共内容{get;set;}
公共int状态{get;set;}
公共字符串id{get;set;}
公共字符串方法{get;set;}
}
公开课内容
{
公共字符串标记{get;set;}
公共int已验证{get;set;}
公共整数帐户\u id{get;set;}
公共int是{get;set;}
public int days_left{get;set;}
}
班级计划
{
静态void Main(字符串[]参数)
{
字符串json=
“{\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\**********************************”,“已验证”:1、\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
Rootobject Rootobject=newJavaScriptSerializer()。反序列化(json);
Content=rootobject.Content;//选择所需内容
System.Console.ReadKey();
}
}
最好的方法是反序列化整个内容,然后只使用您需要的部分。为什么不使用Newtonsoft.Json并反序列化所有内容,只使用您需要的部分?
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();
}
}