【问题标题】:Easy way to create single element Json C# [closed]创建单个元素 Json C# 的简单方法 [关闭]
【发布时间】:2022-01-21 17:00:37
【问题描述】:

我知道这可以很容易地由我自己编写,但可能有更好的方法来做这样的事情。我需要一种简单的方法(静态方法)来使用一个元素创建 JSON。 类似的东西

OneElementJson("name", "value")

并且有类似的东西

{"name":"value"} 

结果。名称应该始终是一个字符串,在大多数情况下值也是字符串,但表列表的重载会很好。

【问题讨论】:

  • 为什么不使用System.Text.Json? (即JsonSerializer.Serialize(new {name: "value"})

标签: c# json


【解决方案1】:

如果您只需要简单的字符串,那么 Serge 的示例非常简洁。

如果您想要更通用的方式来执行此操作,请使用 var 或 Dynamic ojects 以及任何 JSON 序列化程序。下面是一个来自 .NET Core 的示例:

使用 var:

var thing2 = new { name = "value" };

string jsonString2 = System.Text.Json.JsonSerializer.Serialize(thing2);
Console.WriteLine(jsonString2);

使用动态:

dynamic thing = new System.Dynamic.ExpandoObject(); 
thing.name = "value";

string jsonString = System.Text.Json.JsonSerializer.Serialize(thing);
Console.WriteLine(jsonString);

结果是:{"name":"value"}

【讨论】:

    【解决方案2】:

    我刚刚为你创建了一个库

    public string GetOneElementJson<T> (string name, T value) 
    {
         var val= JsonConvert.SerializeObject(value);
        return "{\"" + name + "\":" +  val + "}";
    }
    

    测试

      var json=GetOneElementJson("name", "value");
    
    var json = GetOneElementJson("doubleArray", new double[] { 1.2, 3.3, 4 });
    
     var json = GetOneElementJson("stringArray", new string[] { "one", "two", "three" });
    
      var jObject =JObject.Parse(json);
    

    输出

    {"name":"value"}
    
    {"doubleArray":[1.2,3.3,4]}
    
    {"stringArray":["one","two","three"]}
    
    

    【讨论】:

    • 是的,直到名称或值包含"。另外值得注意的是,在问题的最后说值有时可能是一个列表,我猜这意味着 OP 想要像 {"x":[1,2,3]} 这样的 json,而不是像 {"x":"System.Int32[]"} - 需要一个 IEnumerable 的重载怎么样?
    • @CaiusJard 这只是个玩笑,我无事可做。 OP 不需要任何库。像 JsonSerializer.Serialize 这样的东西会在一行中完成这项工作。
    • @CaiusJard 我更新了我的图书馆。谢谢提醒
    • (不是我的反对意见,但我认为这可能是一个不值得重新发明的轮子,因为所有边缘情况都会开始出现)
    猜你喜欢
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    相关资源
    最近更新 更多