c# - 在 C# 中从字符串创建 JSON 对象

标签 c# .net json javascriptserializer

我正在尝试创建一个包含一个容器和一个数组的 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类进行序列化:

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"}
                });

或者,您可以定义一个类来保存这些值并将此类的对象序列化为 json 字符串。例如,定义类:

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);

关于c# - 在 C# 中从字符串创建 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49512945/

相关文章:

java - JSON反序列化: java. lang.Double无法转换为java.lang.Long

.net - 带有 WCF 的 JSON-P 示例?

c# - 在给定复杂继承的情况下保持一致的松散耦合

c# - 编码.UTF8 默认

.net - WindowsFormsHost 是否适合(.net WPF 托管 WinForms)?

c# - 使用 .NET 格式化大数

c# - 我们可以用 C# 中的对象替换 if 语句吗

c# - 了解来自 MSDN 的 NetworkStream.EndRead() 示例

c# - 绑定(bind)的 UserControl 未更新数据源

java - Play 自定义对象值的框架表单绑定(bind)映射