1. <i id='PpdKa'><tr id='PpdKa'><dt id='PpdKa'><q id='PpdKa'><span id='PpdKa'><b id='PpdKa'><form id='PpdKa'><ins id='PpdKa'></ins><ul id='PpdKa'></ul><sub id='PpdKa'></sub></form><legend id='PpdKa'></legend><bdo id='PpdKa'><pre id='PpdKa'><center id='PpdKa'></center></pre></bdo></b><th id='PpdKa'></th></span></q></dt></tr></i><div id='PpdKa'><tfoot id='PpdKa'></tfoot><dl id='PpdKa'><fieldset id='PpdKa'></fieldset></dl></div>
        <legend id='PpdKa'><style id='PpdKa'><dir id='PpdKa'><q id='PpdKa'></q></dir></style></legend>
      2. <small id='PpdKa'></small><noframes id='PpdKa'>

        <tfoot id='PpdKa'></tfoot>

          <bdo id='PpdKa'></bdo><ul id='PpdKa'></ul>
      3. 从类中获取 JSON 属性名称列表以在查询字符串中使用

        Get a list of JSON property names from a class to use in a query string(从类中获取 JSON 属性名称列表以在查询字符串中使用)

          • <bdo id='KDEjg'></bdo><ul id='KDEjg'></ul>
            • <legend id='KDEjg'><style id='KDEjg'><dir id='KDEjg'><q id='KDEjg'></q></dir></style></legend>
            • <small id='KDEjg'></small><noframes id='KDEjg'>

              <i id='KDEjg'><tr id='KDEjg'><dt id='KDEjg'><q id='KDEjg'><span id='KDEjg'><b id='KDEjg'><form id='KDEjg'><ins id='KDEjg'></ins><ul id='KDEjg'></ul><sub id='KDEjg'></sub></form><legend id='KDEjg'></legend><bdo id='KDEjg'><pre id='KDEjg'><center id='KDEjg'></center></pre></bdo></b><th id='KDEjg'></th></span></q></dt></tr></i><div id='KDEjg'><tfoot id='KDEjg'></tfoot><dl id='KDEjg'><fieldset id='KDEjg'></fieldset></dl></div>
            • <tfoot id='KDEjg'></tfoot>
                <tbody id='KDEjg'></tbody>

                1. 本文介绍了从类中获取 JSON 属性名称列表以在查询字符串中使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  限时送ChatGPT账号..

                  如果我有一个 C# 模型类,JSON.net 使用它来绑定来自序列化 JSON 字符串的数据,有没有办法可以从该类创建查询字符串以发出初始请求?

                  If I have a C# model class that is used by JSON.net to bind data from a serialized JSON string, is there a way that I can create a query string from that class in order to make the initial request?

                  模型类示例:

                  public class model
                  {
                     [JsonProperty(PropertyName = "id")]
                     public long ID { get; set; }
                     [JsonProperty(PropertyName = "some_string")]
                     public string SomeString {get; set;} 
                  }
                  

                  查询字符串示例:

                  baseUrl + uri + "&fields=id,some_string" + token
                  

                  所以我想要做的事情的本质是从模型对象中收集id"和some_string",这样我就可以动态地创建一个&fields"参数.谢谢!

                  So the essence of what I am trying to do is gather both "id" and "some_string" from the model object so i can dynamically create a the "&fields" arguments. Thanks!

                  推荐答案

                  @Leigh Shepperson 有正确的想法;但是,您可以使用 LINQ 用更少的代码来完成.我会创建一个这样的辅助方法:

                  @Leigh Shepperson has the right idea; however, you can do it with less code using LINQ. I would create a helper method like this:

                  using System.Linq;
                  using System.Reflection;
                  using Newtonsoft.Json;
                  ...
                  
                  public static string GetFields(Type modelType)
                  {
                      return string.Join(",",
                          modelType.GetProperties()
                                   .Select(p => p.GetCustomAttribute<JsonPropertyAttribute>())
                                   .Select(jp => jp.PropertyName));
                  }
                  

                  你可以这样使用它:

                  var fields = "&fields=" + GetFields(typeof(model));
                  

                  编辑

                  如果您在 .Net Framework 的 3.5 版本下运行,因此您没有可用的通用 GetCustomAttribute<T> 方法,您可以使用非泛型 GetCustomAttributes() 方法,将其与 SelectManyCast<T> 一起使用:

                  If you're running under the 3.5 version of the .Net Framework such that you don't have the generic GetCustomAttribute<T> method available to you, you can do the same thing with the non-generic GetCustomAttributes() method instead, using it with SelectMany and Cast<T>:

                      return string.Join(",",
                          modelType.GetProperties()
                                   .SelectMany(p => p.GetCustomAttributes(typeof(JsonPropertyAttribute))
                                                     .Cast<JsonPropertyAttribute>())
                                   .Select(jp => jp.PropertyName)
                                   .ToArray());
                  

                  这篇关于从类中获取 JSON 属性名称列表以在查询字符串中使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Force JsonConvert.SerializeXmlNode to serialize node value as an Integer or a Boolean(强制 JsonConvert.SerializeXmlNode 将节点值序列化为整数或布尔值)
                  Using JSON to Serialize/Deserialize TimeSpan(使用 JSON 序列化/反序列化 TimeSpan)
                  Could not determine JSON object type for type quot;Classquot;(无法确定类型“Class的 JSON 对象类型.)
                  How to deserialize a JSONP response (preferably with JsonTextReader and not a string)?(如何反序列化 JSONP 响应(最好使用 JsonTextReader 而不是字符串)?)
                  how to de-serialize JSON data in which Timestamp it-self contains fields?(如何反序列化时间戳本身包含字段的JSON数据?)
                  JSON.Net custom contract serialization and Collections(JSON.Net 自定义合约序列化和集合)
                  <i id='XIrAc'><tr id='XIrAc'><dt id='XIrAc'><q id='XIrAc'><span id='XIrAc'><b id='XIrAc'><form id='XIrAc'><ins id='XIrAc'></ins><ul id='XIrAc'></ul><sub id='XIrAc'></sub></form><legend id='XIrAc'></legend><bdo id='XIrAc'><pre id='XIrAc'><center id='XIrAc'></center></pre></bdo></b><th id='XIrAc'></th></span></q></dt></tr></i><div id='XIrAc'><tfoot id='XIrAc'></tfoot><dl id='XIrAc'><fieldset id='XIrAc'></fieldset></dl></div>

                  <small id='XIrAc'></small><noframes id='XIrAc'>

                  <legend id='XIrAc'><style id='XIrAc'><dir id='XIrAc'><q id='XIrAc'></q></dir></style></legend><tfoot id='XIrAc'></tfoot>
                    • <bdo id='XIrAc'></bdo><ul id='XIrAc'></ul>

                              <tbody id='XIrAc'></tbody>