Tag: json

反序列化会导致List-Entries的副本

我想创建一个非常通用的Model-Layer,它也可以作为JSON传递。 一个型号应该显示一个RaspberryPi2的LED面板。 因为我想将Class建模为尽可能接近现实,所以我强制List总是有8 * 8 Leds。 class级看起来像这样: public class VisualLedPanel { private readonly Lazy<List> _lazyVisualLeds = new Lazy<List>(CreateVisualLeds); public VisualLed this[int x, int y] { get { var result = VisualLeds.FirstOrDefault(f => fX == x && fY == y); return result; } } public IEnumerable VisualLeds { get { return _lazyVisualLeds.Value; } set { var […]

Web Api 2 – 自定义数据类型JSON序列化

我实际上是Web Api的新手,所以我的问题可能听起来有些奇怪。 我有简单的API来返回有关价格变化的历史信息。 我的控制器的动作如下所示: [HttpGet] [Route(“api/history/{id}/{size}”)] public async Task<IEnumerable> GetHistory(string id, Size size) 其中PriceHistoryRecordModel是 [DataContract] public class PriceHistoryRecordModel { [DataMember] public DateTime Date { get; set; } [DataMember] public double Value { get; set; } } 但是,问题是 – action以下列格式返回JSON [{“Date”:”2016-02-07T08:22:46.212Z”,”Value”:17.48},{“Date”:”2016-02-08T09:34:01.212Z”,”Value”:18.37}] 但是,由于客户对数据格式的特定要求,我需要我的JSON这样看 [[1238371200000,17.48],[1238457600000,18.37]] 所以,我想知道 如果有办法实现这样的自定义序列化? 我可以将此自定义序列化包装在属性中并将其用作方面吗?

JsonPropertyAttribute忽略派生类中的私有属性

在序列化具有私有属性的派生对象时,我遇到了Json.Net的问题。 好吧 public class Base { [JsonProperty] private string Type { get { return “Base”; } } } public class Inherited : Base { [JsonProperty] private string Type { get { return “Inherited”; } } } 当我序列化Inherited实例时, Type属性始终设置为“Base”。 我发现工作的唯一方法是属性受保护或公共,并在子类中重写。 为什么这样工作? 那是一个错误吗?

优化的JSON序列化器/解串器作为扩展方法?

我想尽可能容易地将任何对象序列化为JSON,然后简单地将其转换回type = safe对象。 任何人都可以告诉我在“FromJSONString”扩展方法中我做错了什么? 编辑 为方便起见,下面是一个完整的function扩展方法。 如果你看到错误,请告诉我。 public static string ToJSONString(this object obj) { using (var stream = new MemoryStream()) { var ser = new DataContractJsonSerializer(obj.GetType()); ser.WriteObject(stream, obj); return Encoding.UTF8.GetString(stream.ToArray()); } } public static T FromJSONString(this string obj) { using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(obj))) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); T ret = (T)ser.ReadObject(stream); […]

JSON.NET为什么它添加到列表而不是覆盖?

public class MyClass { public List myList = new List { 1337 }; public MyClass() {} } var myClass = JsonConvert.DeserializeObject(“{myList:[1,2,3]}”); Console.WriteLine(string.Join(“,”, myClass.myList.ToArray())); //1337,1,2,3 为什么它显示1337,1,2,3而不是1,2,3? 有没有办法/设置让JSON.NET覆盖List而不是添加元素? 我需要一个不修改构造函数的解决方案。

如何在WCF Rest Service中创建JSON以匹配/序列化为DataContract

接口: namespace SQRT_WCF { [DataContract] public class PlaceOrder { [DataMember] public string claimID { get; set; } [DataMember] public string rederenceDate { get; set; } } } 调用C#方法: public SQ_jsonModel.Response placeOrder(PlaceOrder argPlaceOrderJSON) { … } 我已将我的web服务附加到工作进程,并跟踪代码。 到目前为止,我尝试过的所有内容,变量argPlaceOrderJSON都为null。 我尝试过至少三种变化: 变化#1 { “claimID” : “value”, “rederenceDate” : “value” } 变化#2: { “PlaceOrder” : { “claimID” : “value”, […]

问题将JSON反序列化为List

我有一个问题将JSON字符串反序列化为List TCProject如下: [JsonObject(MemberSerialization.OptIn)] public class TCProject { public override string ToString() { return Name; } [JsonProperty(PropertyName = “archived”)] public bool Archived { get; set; } [JsonProperty(PropertyName = “description”)] public string Description { get; set; } [JsonProperty(PropertyName = “href”)] public string Href { get; set; } [JsonProperty(PropertyName = “id”)] public string Id { get; set; } […]

使用JSON填充现有对象

我使用Json.Net填充类,如下所示: var account = JsonConvert.DeserializeObject(result.ToString()); 上面的结果JSON字符串填充了我的Account类中的几个属性。 我后来有一个新的JSON字符串,并希望用剩余的属性填充相同的Account类。 这可能使用JSON.NET或JsonConvert方法吗? 我基本上想要添加/添加到我在上面的代码行中填充的帐户对象。 我的课: public class Account { public string CID { get; set; } public string jsonrpc { get; set; } public string id { get; set; } public List mail { get; set; } public List uid { get; set; } public List userPassword { get; set; […]

在.NET运行时中解析JSON

我想从WebServer获得一些回复。 返回的数据如下所示: [[3014887,”string1 string”,”http://sofzh.miximages.com/c%23/b_c9c0625b.jpg”,0], [3061529,”string2 string”,”http://sofzh.miximages.com/c%23/b_320d6d36.jpg”,0], [7317649,”string3 string”,”http://sofzh.miximages.com/c%23/b_a60b3dc2.jpg”,0], [12851194,”string4 string”,”http://sofzh.miximages.com/c%23/b_4e273fa4.jpg”,0], [15819606,”string5 string”,”http://sofzh.miximages.com/c%23/b_66333a8f.jpg”,0], [15947248,”string6 string”,”http://sofzh.miximages.com/c%23/b_920c8b64.jpg”,0]] 我认为是JSON格式,但我无法在我的.Net WinForm应用程序中解析它。 你能提供一些建议或者说明如何做到这一点。 我搜索了JSON.NET库, DataContractJsonSerializer类,但我无法理解如何将它与响应的数据类型粘合在一起……

HttpClient PostAsJsonAsync与Newtonsoft.Json不兼容

我刚刚在winforms应用程序中找到的东西 我的应用程序对Web Api服务进行http调用,如下所示 HttpClient _client = new HttpClient(); _client.Timeout = new TimeSpan(0, 3, 0); _client.BaseAddress = new Uri(“http://Myserver/MyApp”); _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(“application/json”)); HttpResponseMessage response = _client.PostAsJsonAsync(“api/Addin”, newObject).Result; 没什么好看的,但只要你通过nuget安装Newtonsoft.Json(V6.0.3) 突然我在HttpResponseMessage代码行上遇到stackOverflow错误。 删除Newtonsoft,问题解决了。 问题是我是使用库来序列化/反序列化我表单中其他地方的数据 我的解决方法是使用不同的库,我只使用System.Runtime.Serialization.Json; 但这仍然很奇怪,不是吗? 我还应该补充一点,这是dotnet v4.0(而不是4.5),我的应用程序是在MsWord中作为Add On运行的VSTO COM对象 我怀疑牛顿软件中可能存在一个错误