拆分JSON字符串的一部分以反序列化

时间:2017-08-18 13:58:41

标签: 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\"}"

我只需要内容对象。所以我需要制作一个可以使这个字符串成为的正则表达式(?):

"{\"token\":\"*************************\",\"is_verified\":1,\"account_id\":45087,\"is_starter\":0,\"days_left\":1}"

最好的方法是什么?

2 个答案:

答案 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();
        }
    }