【问题标题】:How to create json dynamically?如何动态创建json?
【发布时间】:2019-12-19 18:47:01
【问题描述】:

我需要使用类动态创建一个 json。例如以下是我的 json "{'createdDate':['2019-07-20T05:53:28','2019-07-20T05:53:28']}"。我需要的课程是

public class Json
{
  public string Key {get;set;}
  public List<string> value {get;set;}
}

创建对象并赋值

var JsonObj = new Json();
JsonObj.key = "createdDate";
JsonObj.Add("2019-07-20T05:53:28");
JsonObj.Add("2019-07-20T05:53:28");    

上面的类是针对单键值对的。但问题是键和值是动态的。可能是单个或多个键值对。我该如何解决这个问题。谁能帮帮我。

【问题讨论】:

  • 你能展示一些示例动态值吗?还是预期的结果?
  • 感谢@Prashant Pimpale 的回复。动态值可能像这样 {"createdDate":["2019-07-20T05:53:28","2019-07-20T05:53:28 "],"id":["1","2"],"name":["name1","name2"],...}
  • 您可以使用以下方式:dynamic stuff1 = JsonConvert.DeserializeObject(jsonstring) 无需类,您可以通过 json 路径访问元素。
  • 如果您已经有了生成所需 JSON 的类声明,为什么还需要更动态的解决方案?请发布您当前解决方案不支持的描述和示例。您提到“单个或多个键值对”,您能否展示当前类不支持的预期输出示例?

标签: c# json c#-4.0


【解决方案1】:

我认为您的问题始于您的命名法。你的类不是 json,它只是一个有名字的列表。您需要做的就是创建您的命名列表,然后使用例如 Newtonsoft.Json 将其序列化为 json。这是一段代码:

using System.Collections.Generic;
using Newtonsoft.Json;

namespace ConsoleApp1
{
    public class Program
    {
        public static void Main()
        {
            NamedList list = new NamedList();
            list.Key = "createdDate";
            list.Value.Add( "2019-07-20T05:53:28" );
            list.Value.Add( "2019-07-20T05:53:29" );

            string jsonString = JsonConvert.SerializeObject( list );
        }
    }

    public class NamedList
    {
        public string Key { get; set; }
        public List<string> Value { get; set; }= new List<string>();
    }
}

【讨论】:

    猜你喜欢
    • 2023-01-31
    • 2021-08-07
    • 2018-05-08
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2015-07-18
    • 2018-10-14
    • 2019-07-20
    相关资源
    最近更新 更多