【问题标题】:Create a json request object in c#在c#中创建一个json请求对象
【发布时间】:2015-10-14 17:45:01
【问题描述】:
   [{
  "channel_id":299,
  "requests":[{
      "order_id":3975,
      "action":"REQUEST_LABELS"
  }]
}]

如何在c#中创建上述请求,请求可以是多个。

我是 C# 新手,我尝试了以下方法:

  Dictionary<long, List<object>> requestObject = new Dictionary<long, List<object>>();
        List<object> listrequestObjects = new List<object>();

            Request requestOb = new Request();
            requestOb.order_id = 2372;
            requestOb.action = "REQUEST_LABELS";
            listrequestObjects.Add(requestOb);
            requestObject.Add(2352635, listrequestObjects);
            string requesttest = JsonConvert.SerializeObject(requestObject);

但是收到了一个奇怪的请求。请帮忙。

【问题讨论】:

    标签: c# jsonserializer


    【解决方案1】:

    结构应该是这样的:

    public class Request
    {
        public int order_id { get; set; }
        public string action { get; set; }
    }
    
    public class RootObject
    {
        public int channel_id { get; set; }
        public List<Request> requests { get; set; }
    }
    

    【讨论】:

      【解决方案2】:

      您还需要声明根对象:

      [Serializable]
      public class Root {
          public int channel_id;
          public Request[] requests;
      }
      

      然后赋值并序列化:

      var root = new Root();
      root.channel_id = 299;
      root.requests = listrequestObjects.ToArray();
      string requesttest = JsonConvert.SerializeObject(root);
      

      【讨论】:

        【解决方案3】:

        您可以使用Newtonsoft.Json

        试试这个

            private JArray GetResponse()
            {
                var main_array = new JArray();
                var channel_id = new JObject();
                channel_id.Add("channel_id",299);
        
                var request = new JArray();
                var order_id = new JObject();
                order_id.Add("order_id",3975);
        
                var action = new JObject();
                action.Add("action","REQUEST_LABELS");
        
                request.Add(order_id);
                request.Add(action);
        
                main_array.Add(channel_id);
                main_array.Add(request);
        
                return main_array;
            }
        

        【讨论】:

          【解决方案4】:

          请尝试命名空间中可用的 JavaScriptSerializer 类 使用 System.Web.Script.Serialization

          JavaScriptSerializer js = new JavaScriptSerializer();
          string result = js.Serialize(requestObject);
          

          requestObject 列表是具有所有必要属性的自定义类。

          谢谢

          【讨论】:

          • 这会有什么帮助?
          猜你喜欢
          • 2020-08-01
          • 2019-12-21
          • 2021-12-03
          • 1970-01-01
          • 2022-08-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-18
          相关资源
          最近更新 更多