是否可以将普通字符串转换为:
"Data: {
id: '288dsbshbdas8dsdsb',
data: '2pm'
}"
收件人:
Data: {
id: '288dsbshbdas8dsdsb',
data: '2pm'
}
已经尝试过:
string input = "Data: {id: '288dsbshbdas8dsdsb', data: '2pm'};
var output = Convert.ChangeType(input, TypeCode.Object);
但这仍然返回字符串吗?
答案 0 :(得分:3)
使用NewtonSoft JsonTextWriter和JsonTextReader,您可以轻松地编写和读取这种字符串。
要编写,必须使用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; }
}
}
作者将返回{Data:{id:'123456',data:'FooBar'}}
而不是Data:{id:'123456',data:'FooBar'}
注意到字符串周围多余的{}
。
从另一个获得的字符串操作就足够了。