Tag: json

如何在反序列化JSON时将ObjectCreationHandling.Replace应用于所选属性?

我有一个包含List<Tuple>属性的类,其默认构造函数分配列表并使用一些默认值填充它,例如: public class Configuration { public List<Tuple> MyThreeTuple { get; set; } public Configuration() { MyThreeTuple = new List<Tuple>(); MyThreeTuple.Add(new Tuple(-100, 20, 501)); MyThreeTuple.Add(new Tuple(100, 20, 864)); MyThreeTuple.Add(new Tuple(500, 20, 1286)); } } 当我使用Json.NET从JSON反序列化此类的实例时,JSON中的值将添加到列表中而不是替换列表中的项,从而导致列表具有太多值。 在反序列化列表期间 , Json.Net调用属性getter中给出了此问题的解决方案,从而导致重复项 。 var settings = new JsonSerializerSettings { ObjectCreationHandling = ObjectCreationHandling.Replace }; var config = JsonConvert.DeserializeObject(jsonString, settings); 这会导致Json.NET为正在反序列化的所有内容分配新的实例。 但是,这引入了另一个问题:我的类存在于更大的对象图中,并且图中的某些类型没有默认构造函数。 […]

在.NET 2.0中序列化为JSON

如何使用C#将对象序列化为.NET 2.0中的JSON?

将json转换为c#对象列表

Json字符串: {“movies”:[{“id”:”1″,”title”:”Sherlock”},{“id”:”2″,”title”:”The Matrix”}]} C#类: public class Movie { public string title { get; set; } } C#将json转换为电影的c#列表: JavaScriptSerializer jss = new JavaScriptSerializer(); List movies = jss.Deserialize<List>(jsonString); 我的movies变量最终是一个空数列表,其中count = 0.我错过了什么吗?

从结构化数据构建JSON层次结构

C#| .NET 4.5 | entity framework5 我有一个以ID,ParentID,Nameforms从SQL查询返回的数据。 我想获取该数据并将其解析为Hierarchical JSON字符串。 到目前为止,这似乎是一项艰巨的任务,而不是应有的任务。 因为我正在使用Entity,所以数据作为IEnumerable很好地回馈给我。 现在我相信我只需要某种forms的递归,但我不确定从哪里开始。 任何帮助表示赞赏。 数据返回为 id parentId name 1 1 TopLoc 2 1 Loc1 3 1 Loc2 4 2 Loc1A 代码是 public static string GetJsonLocationHierarchy(long locationID) { using (EntitiesSettings context = new EntitiesSettings()) { // IEnumerable of ID,ParentID,Name context.GetLocationHierarchy(locationID); } } 最终的结果我希望是这样的: { “id”: “1”, “parentId”: […]

在ASP.NET Core 2.0 Web Api中返回“raw”json

AFAIK在ASP.NET Core Web Api中返回数据的标准方法是使用IActionResult并提供例如OkObject结果。 这适用于对象,但如果我以某种方式获得了JSON字符串,我只想将该JSON返回给调用者? 例如 public IActionResult GetSomeJSON() { return Ok(“{ \”name\”:\”John\”, \”age\”:31, \”city\”:\”New York\” }”); } ASP.NET Core在这里做的是,它接受JSON字符串,并再次将其包装到JSON中(例如,它转义为JSON) 使用[Produces(“text/plain”)]返回纯文本可以通过提供“RAW”内容来工作,但它也会将响应的内容类型设置为PLAIN而不是JSON。 我们在控制器上使用[Produces(“application/json”)] 。 如何在没有转义的情况下将JSON作为普通的JSON内容类型返回? 注意:获取JSON字符串无关紧要,它可能来自第三方服务,或者存在一些特殊的序列化需求,因此我们希望进行自定义序列化而不是使用默认的JSON.NET序列化程序。

如何在Windows Phone 7上解析JSON到动态对象?

对于Web应用程序,我可以使用System.Web 并使用此技巧将JSON转换为动态对象。 但对于Windows Phone,我无法使用JavaScriptConverter 。 在Windows Phone 7.1上转换动态对象中的JSON的解决方法是什么?

用于解析JSON对象数组的正则表达式?

我正在尝试将一组JSON对象解析为C#中的字符串数组。 我可以从JSON对象中提取数组,但我无法将数组字符串拆分为单个对象的数组。 我所拥有的是这个测试字符串: string json = “{items:[{id:0,name:\”Lorem Ipsum\”},{id:1,name” + “:\”Lorem Ipsum\”},{id:2,name:\”Lorem Ipsum\”}]}”; 现在我正在使用以下正则表达式将项目拆分为单个对象。 现在,他们是2个独立的正则表达式,直到我用第二个修复问题: Regex arrayFinder = new Regex(@”\{items:\[(?[^\]]*)\]\}” , RegexOptions.ExplicitCapture); Regex arrayParser = new Regex(@”((?\{[^\}]\}),?)+” , RegexOptions.ExplicitCapture); arrayFinder正则表达式按照我期望的方式工作,但由于我不明白的原因, arrayParser正则表达式根本不起作用。 我想要它做的就是将各个项目拆分成自己的字符串,这样我得到一个这样的列表: {id:0,name:”Lorem Ipsum”} {id:1,name:”Lorem Ipsum”} {id:2,name:”Lorem Ipsum”} 此列表是string[]数组还是Group或Match集合无关紧要,但我对如何拆分对象感到困惑。 使用上面声明的arrayParser和json字符串,我尝试过这个代码,我认为这个代码没有运气: string json = “{items:[{id:0,name:\”Lorem Ipsum\”},{id:1,name” + “:\”Lorem Ipsum\”},{id:2,name:\”Lorem Ipsum\”}]}”; Regex arrayFinder = new Regex(@”\{items:\[(?[^\]]*)\]\}” , RegexOptions.ExplicitCapture); […]

在datamember“__type”上反序列化JSON的问题

简而言之,我正在尝试从Bing Maps Geocoding REST API反序列化JSON响应, 我创建了我的响应类,现在当我试图实际反序列化响应时,我收到以下错误: 不期望输入数据合同名称为“{1}:{2}”的“{0}”。 考虑使用DataContractResolver或将任何静态未知的类型添加到已知类型列表中 – 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中。 它试图反序列化这一行JSON,并失败: “__type”: “Location:http:\/\/schemas.microsoft.com\/search\/local\/ws\/rest\/v1”, 我的响应类看起来像这样 [DataContract] public class GeoResponse { [DataMember(Name = “statusDescription”)] public string StatusDescription { get; set; } [DataMember(Name = “statusCode”)] public string StatusCode { get; set; } [DataMember(Name = “resourceSets”)] public ResourceSet[] resourceSets { get; set; } [DataContract] public class ResourceSet { [DataMember(Name […]

JSON反序列化为构造的受保护的setter数组

我使用Newtonsoft JSON来序列化/反序列化我的对象。 其中一个包含一个带有受保护的setter的数组,因为构造函数构建了数组本身,只有成员被操纵。 这可以没有问题地序列化,但是当反序列化时,它被忽略,因为它不是公共的。 我尝试了一个自定义转换器,它也没有被调用,因为它不公开。 这是一个最小化的例子: public static class TestCoordsDeserialization { private class Coords { public Double X { get; set; } public Double Y { get; set; } public Double Z { get; set; } public Double A { get; set; } } private class Engine { public string Text { get; set; } […]

正确使用jQuery.Ajax脚本中JSON的返回值

我有2个DropDownList,就像Master-Slave一样。 这是我的Default.aspx: 这是我的脚本: $(document).ready(function () { $(‘select#Masterddl’).change(function () { MasterChangeHandler($(this).val()); }); function MasterChangeHandler(Value) { $.ajax({ type: ‘Post’, url: ‘MasterSlaveHandler.ashx’, dataType: “text”, data: ‘ItemSelected=’ + Value, async: ‘true’, success: function (data) { SuccessHandler1(data); } }); } function SuccessHandler1(data) { $(‘select#Slaveddl’).empty(); $.each(data, function (i, slaveValue) { $(‘select#Slaveddl’).append( $(”).val(slaveValue.Value).html(slaveValue.Text) ); }); } 和我的处理程序: public class SlaveValues { public […]