在C#中使用可变参数表示JSON的类的最佳方法

在C#中使用可变参数表示JSON的类的最佳方法,第1张

概述我在WCF中有一个Web服务,其 *** 作需要 JSON格式的请求和响应.我知道我可以编写具有我想用JSON表示的属性的C#对象,但我的问题是JSON参数可能会改变.例如,我的方法合同如下: [WebInvoke(Method = "PUT", UriTemplate = "users", RequestFormat = WebMessageFormat.Json, 我在WCF中有一个Web服务,其 *** 作需要 JSON格式的请求和响应.我知道我可以编写具有我想用JsON表示的属性的C#对象,但我的问题是JsON参数可能会改变.例如,我的方法合同如下:
[WebInvoke(Method = "PUT",UriTemplate = "users",RequestFormat = Webmessageformat.Json,ResponseFormat = Webmessageformat.Json)]    [OperationContract]    Response PutUserAccount(User user);

用户的参数可能包含任意数量的参数,因此用户的实例有时可能是:

{    "name" : "John","Lastname" : "Doe","Email" : "jdoe@gmail.com","Username" : "jdoe","Gender" : "M"    "Phone" : "9999999"}

甚至:

{    "name" : "John","Favoritecolor" : "Blue"}

使用具有可变数量属性的对象来表示JsON文档的最佳方法是什么?

编辑这个类允许我有一个灵活的JsON表示,因为我不能在WCF中使用JObject(我应该发布这个作为答案吗?):

using System; using System.Collections.Generic; using System.Runtime.Serialization;namespace Mynamespace {    [Serializable]    public class Data : ISerializable    {        internal Dictionary<string,object> Attributes { get; set; }        public Data()        {            Attributes = new Dictionary<string,object>();        }        public Data(Dictionary<string,object> data)        {            Attributes = data;        }        protected Data(SerializationInfo info,StreamingContext context)            : this()        {            SerializationInfoEnumerator e = info.GetEnumerator();            while (e.MoveNext())            {                Attributes[e.name] = e.Value;            }        }        public voID GetobjectData(SerializationInfo info,StreamingContext context)        {            foreach (string key in Attributes.Keys)            {                info.AddValue(key,Attributes[key]);            }        }        public voID Add(string key,object value)        {            Attributes.Add(key,value);        }        public object this[string index]        {            set { Attributes[index] = value; }            get            {                if (Attributes.ContainsKey(index))                    return Attributes[index];                else                    return null;            }        }    }

}

解决方法 您可以使用 Json.NET中的JObject类.您可以将Json解析为JObject属性并对其进行 *** 作. JObject不仅仅是一本词典. 总结

以上是内存溢出为你收集整理的在C#中使用可变参数表示JSON的类的最佳方法全部内容,希望文章能够帮你解决在C#中使用可变参数表示JSON的类的最佳方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1252963.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存