繁体   English   中英

将普通字符串转换为对象

[英]Converting ordinary string to object

是否可以将普通字符串转换为:

"Data: {
    id: '288dsbshbdas8dsdsb',
    data: '2pm'
}"

至:

Data: {
    id: '288dsbshbdas8dsdsb',
    data: '2pm'
}

尝试过这样的:

 string input = "Data: {id: '288dsbshbdas8dsdsb', data: '2pm'};
 var output = Convert.ChangeType(input, TypeCode.Object);

但这仍然返回字符串吗?

使用NewtonSoft JsonTextWriterJsonTextReader您可以轻松地编写和读取这种字符串。

要编写您的必须使用JsonTextWriter属性:

writer.QuoteName = false;
writer.QuoteChar = '\'';

要阅读自定义配置。

using System;
using System.IO;
using Newtonsoft.Json;

public class Program
{
    public static void Main()
    {
        var objSource= new RootObject{
            Data= new Data{
                id="123456",
                data="FooBar"
            }
        };      

        var serializer = new JsonSerializer();
        var stringWriter = new StringWriter();
        var writer = new JsonTextWriter(stringWriter);
        writer.QuoteName = false;
        writer.QuoteChar = '\'';
        serializer.Serialize(writer, objSource);        

        var input= stringWriter.ToString();
        Console.WriteLine(input);

        JsonTextReader reader = new JsonTextReader(new StringReader(input));
        var result = serializer.Deserialize<RootObject>(reader);

        result.Dump();
    }

    public class Data
    {
        public string id { get; set; }
        public string data { get; set; }
    }

    public class RootObject
    {
        public Data Data { get; set; }
    }
}

现场演示


免责声明:正如Jodrell所注意到的,它返回一个“ RootObject”。

编写者将返回{Data:{id:'123456',data:'FooBar'}}
而不是Data:{id:'123456',data:'FooBar'}请注意,在字符串周围还有多余的{}
从另一个获得的字符串操作就足够了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM