【问题标题】:Create JSON object from string in C#从 C# 中的字符串创建 JSON 对象
【发布时间】:2018-03-27 12:32:19
【问题描述】:

我正在尝试创建一个包含一个容器和一个数组的 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]"}

任何帮助或建议如何获得所需的格式?

【问题讨论】:

    标签: c# .net json javascriptserializer


    【解决方案1】:

    在最新版本的 .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);
    

    【讨论】:

    • message 后面不应该跟 : 的`=` 吗?
    • 是的,你是 rigt @MarkBenovsky,谢谢。 (javascript令人困惑)哈哈。
    猜你喜欢
    • 2017-01-04
    • 2022-01-22
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    相关资源
    最近更新 更多