在 C# 中从字符串创建 JSON 对象
Create JSON object from string in C#
我正在尝试创建一个包含一个容器和一个数组的 JSON 字符串。
我可以通过使用 stringbuilder 来做到这一点,但我正在尝试找到一种更好的方法来获取 JSON 字符串;我要:
{ "message":{ "text":"test sms"},"endpoints":["+9101234"]}
我试过这个:
string json = new JavaScriptSerializer().Serialize(new
{
text = "test sms",
endpoints = "[dsdsd]"
});
输出为:
{"text":"test sms","endpoints":"[dsdsd]"}
关于如何获得所需格式的任何帮助或建议?
在最新版本的 .NET 中,我们有 System.Text.Json
命名空间,使得第三方库无需处理 json。
using System.Text.Json;
并使用JsonSerializer
class序列化:
var data = GetData();
var json = JsonSerializer.Serialize(data);
并反序列化:
public class Person
{
public string Name { get; set; }
}
...
var person = JsonSerializer.Deserialize<Person>("{\"Name\": \"John\"}");
其他版本的 .NET 平台有不同的方法,例如 JavaScriptSerializer
其中最简单的方法是使用匿名类型,例如:
string json = new JavaScriptSerializer().Serialize(new
{
message = new { text = "test sms" },
endpoints = new [] {"dsdsd", "abc", "123"}
});
或者,你可以定义一个class来保存这些值,并将这个class的一个对象序列化为一个json字符串。例如,定义 classes:
public class SmsDto
{
public MessageDto message { get; set; }
public List<string> endpoints { get; set; }
}
public class MessageDto
{
public string text { get; set; }
}
并使用它:
var sms = new SmsDto()
{
message = new MessageDto() { text = "test sms" } ,
endpoints = new List<string>() { "dsdsd", "abc", "123" }
}
string json = new JavaScriptSerializer().Serialize(sms);
我正在尝试创建一个包含一个容器和一个数组的 JSON 字符串。 我可以通过使用 stringbuilder 来做到这一点,但我正在尝试找到一种更好的方法来获取 JSON 字符串;我要:
{ "message":{ "text":"test sms"},"endpoints":["+9101234"]}
我试过这个:
string json = new JavaScriptSerializer().Serialize(new
{
text = "test sms",
endpoints = "[dsdsd]"
});
输出为:
{"text":"test sms","endpoints":"[dsdsd]"}
关于如何获得所需格式的任何帮助或建议?
在最新版本的 .NET 中,我们有 System.Text.Json
命名空间,使得第三方库无需处理 json。
using System.Text.Json;
并使用JsonSerializer
class序列化:
var data = GetData();
var json = JsonSerializer.Serialize(data);
并反序列化:
public class Person
{
public string Name { get; set; }
}
...
var person = JsonSerializer.Deserialize<Person>("{\"Name\": \"John\"}");
其他版本的 .NET 平台有不同的方法,例如 JavaScriptSerializer
其中最简单的方法是使用匿名类型,例如:
string json = new JavaScriptSerializer().Serialize(new
{
message = new { text = "test sms" },
endpoints = new [] {"dsdsd", "abc", "123"}
});
或者,你可以定义一个class来保存这些值,并将这个class的一个对象序列化为一个json字符串。例如,定义 classes:
public class SmsDto
{
public MessageDto message { get; set; }
public List<string> endpoints { get; set; }
}
public class MessageDto
{
public string text { get; set; }
}
并使用它:
var sms = new SmsDto()
{
message = new MessageDto() { text = "test sms" } ,
endpoints = new List<string>() { "dsdsd", "abc", "123" }
}
string json = new JavaScriptSerializer().Serialize(sms);