Tag: json

Json.NET Custom ValueProvider将对象转换为Guid

我正在尝试为Json.NET创建一个自定义ValueProvider,它将跳过序列化所有对象,并且只返回表示其主键的Guid类型的属性(作为参考)。 例: jsonData: { myObject: { id: “23e23-2gg5-6y666556-y6yg33”, property2: “” } } 应该成为: jsonData: { myObjectId: “23e23-2gg5-6y666556-y6yg33” } 这是我到目前为止编写的代码。 我非常接近使它工作,但在我的CustomValueProvider我似乎无法获得对象值。 我怎样才能做到这一点? private class CustomValueProvider : IValueProvider { private readonly MemberInfo _member; public CustomValueProvider(MemberInfo member) { _member = member; } public void SetValue(object target, object value) { throw new NotImplementedException(); } public object GetValue(object target) { […]

使用JSON.Net解析自定义日期格式

我收到了以下格式的JSON日期: “launch_date”: 1250553600 我应该如何修改以下内容以包含允许我将该数字转换为DateTime对象的自定义DateTime解析器? JsonConvert.DeserializeObject(json); public sealed class NTask { public DateTime launch_date { get; set; } } 或者我可以使用long然后在另一个字段中解析它,但我宁愿避免这样做,并让JsonConvert通过某些转换器自动将其解析为DateTime。

JSON反序列化后无法访问属性到动态

我在JSON反序列化后访问动态属性时遇到了一些问题。 这是JSON: { “user” : { “511221” :{ “timestamp” : 1403365646384, “version” : -81317051, “email” : “user@name.com”, “name” : “My Name”, “structures” : [ “structure.62dd1ff1-f96b-22e3-8d4e-22000c20725r” ] } }, } 这里实际上有两个问题。 首先是每个用户的“511221”更改。 这是在validation时给出的。 我无法创建用户类,然后创建另一个名称不断更改的类。 而且,这是一个数字。 AFAIK,没有办法将类名作为数字。 我有什么选择? 我无法控制API返回的内容。 因此,我没有反序列化到预定义的类中,而是具有动态,如下所示: dynamic jsonObject = JsonConvert.DeserializeObject(response); 我希望能够做到这一点: string[] structures = jsonObject.user.(authInfo.userid).structures; 换句话说,我希望(authInfo.userid)将用户ID作为上面的字符串输入,但这似乎不可能。 我也试过反思: private static object ReflectOnPath(object o, string […]

仅更新未设置为null的EF实体上的某些属性

我有一个浏览器发送JSON但它只包含已更改的给定模型的属性。 因此,一旦WCF DataContractJsonSerializer完成它的工作,我就有一个对象,可能只填充了ID和Description字段。 将其附加到DbContext将导致描述字段被更新,但所有其他字段被设置为其类型在数据库中的默认值。 这是因为如果WCF没有看到JSON中指定的属性,那么它将跳过它,这意味着实例中的属性将根据自动实现的属性使用类型默认值。 所以这意味着我需要决定在没有访问JSON本身的情况下传递了哪些字段。 事实上,它可能是线上的XML,所以我可以使用的是这个部分序列化的对象。 最合乎逻辑的是使用null作为特殊值,这意味着此属性尚未被序列化。 所以在POCO模型的构造函数中,我将所有属性设置为null 。 在Update方法中,然后使用此序列化对象作为存根。 我必须遍历每个属性,如果值没有设置为null,那么我将其状态设置为modified。 据我所知,这是没有任何副作用的工作,但我只是不确定这是做这样的事情的方式。 它添加的一个限制是客户端不能再故意将属性设置为null,因为该更新将丢失。 解决此问题的一种方法是使用一个特殊的int值,可以设置为在数据库中表示null,也可以是一个空字符串,表示数据库中的null,并在更新中使用代码查找这些特殊值,然后设置实体属性为null。 远非理想,可能容易出错。 这是我目前处理更新的代码。 我真的非常感谢有关更好,也许更明显的做法的建议。 夏季:如何判断模型实例上的哪些属性已由DataContractSerializer / DataContractJsonSerializer设置,哪些属性仅使用其构造函数的默认值。 使用特殊值是有问题的,因为客户端可能希望将某些内容设置为空字符串,或者设置为0或-1或实际上为null。 public T Update(T obj) { var entity = ds.Attach(obj); // For each property in the model foreach (var p in typeof(T).GetProperties()) { // Get the value of the property var v = p.GetValue(obj, […]

.net的Newtonsoft JSON忽略了jsonproperty标签

出于一些非常恼人的原因,JsonProperty标签不适用于Newtonsoft的Json for .net工具。 在我的class上我有这些: [JsonProperty(PropertyName = “id”)] public string ID { get; set; } [JsonProperty(PropertyName = “title”)] public string Title { get; set; } [JsonProperty(PropertyName = “url”)] public string Url { get; set; } [JsonProperty(PropertyName = “class”)] public string EventClass { get; set; } [JsonProperty(PropertyName = “start”)] public string Start { get; set; } [JsonProperty(PropertyName […]

如何在C#中处理JSON?

是否有一个简单/优雅的解析器来处理C#中的JSON? 如何实际序列化/反序列化为C#对象?

如何将此JSON反序列化为对象?

我正在尝试使用JSON.Net将JSON对象反序列化为C#对象。 我想要创建的对象是MonthlyPerformance ,它包含Type列表,其中包含Categories列表,而MonthlyPerformance列表又包含一个Funds列表。 它们被定义为: public class MonthlyPerformance { public List Types { get; set; } } public class Type { public int Id { get; set; } public string CountryId { get; set; } public string Name { get; set; } public List Categories { get; set; } public Type() { } } public class […]

如何解除包含多维数组的json对象?

我需要一些关于将包含多维数组的JSON对象转换为我的类的帮助。 我试图反序列化json对象但失败了。 JsonMaclar类对象为null。 请帮忙。 脚本代码; var allFields = new Array(); allFields.push({ BirinciKatilimciId: birinciKatilimciId.val(), IkinciKatilimciId: ikinciKatilimciId.val(), BirincininSkoru: birincininSkoru.val(), IkincininSkoru: ikincininSkoru.val(), MacSayisi: macSayisi.val(), MacSuresi: macinSuresi.val(), MacinOynanmaSaati: macinOynanmaSaati.val(), Hukmen: hukmen.is(‘:checked’), RatingeDahil: ratingeDahil.is(‘:checked’), MaclarTablosundaGoster: maclarTablosundaGoster.is(‘:checked’), MacinTarihi: macinTarihi.val() }); $(“#”).click(function () { var jsonText = JSON.stringify({ arrayAllMaclar: allFields }); $(‘#’).val(jsonText); }); c#代码; protected void btnMaclariKaydet_Click(object sender, EventArgs e) { JavaScriptSerializer […]

WCF – 发布JSON对象

我正在尝试将JSON POST到WCF服务。 json对象包含一个数组。 我想知道如何正确绑定到我的数据合同。 如果有人能给我一个指针,我会非常感激。 目前我的购物车对象为空 这就是我的服务界面: public interface IService { [OperationContract] [WebInvoke(UriTemplate = “/cart”, Method = “POST”, BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json)] Ship GetShipInfo( Cart cart, string Website); } [DataContract] public class Cart { [DataMember] public Int32 ProductID { get; set;} [DataMember] public decimal ItemPrice { get; set; } [DataMember] public […]

在C#中,当一个字段可能是字符串或字符串数​​组时,如何反序列化此json?

我有一个asp.net-mvc网站,我正在从数据库中读取Json字符串。 以下是DB中的以下json。 它可能看起来像这样: {“description”: “Test”, “contacts”: [“joe@gmail.com”, “bill@yahoo.com”], “enabled”: true} 或这个: {“description”: “Test”, “contacts”: “joe@gmail.com, bill@yahoo.com”, “enabled”: true} 如您所见,联系人字段是: 一个字符串(用逗号分隔的项目) 一串字符串。 我想转换为这个类: public class MyJob { public string description; public string[] contacts; public string enabled; } 当我尝试使用JavascriptSerializer()仅指定一个字符串(将上面的内容更改为:public string contacts;)时: var serializer = new JavaScriptSerializer(); string contacts = serializer.Deserialize(theAboveJsonString).contacts; 我在它的数组的情况下得到这个错误: 类型’System.String’不支持反序列化数组。 什么是反序列化处理以下情况的最佳方法: 一个字符串 一串字符串。 对于联系人字段。 我很乐意提出所需的任何条件逻辑。 […]