C# 拆分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\"}" 我只需要内容

我有一个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}"

做这件事最好的方法是什么?

你可以用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();
        }
    }