Tag: json.net

Newtonsoft JsonSerializer – 小写属性和字典

我正在使用json.net(Newtonsoft的JsonSerializer)。 我需要自定义序列化以满足以下要求: 属性名称必须以小写字母开头。 必须将字典序列化为jsonp,其中键将用于属性名称。 LowerCase规则不适用于字典键。 例如: var product = new Product(); procuct.Name = “Product1”; product.Items = new Dictionary(); product.Items.Add(“Item1″, new Item { Description=”Lorem Ipsum” }); 必须序列化为: { name: “Product1”, items : { “Item1”: { description : “Lorem Ipsum” } } } 注意属性Name序列化为“name”,但键Item1序列化为“Item1”; 我试图创建CustomJsonWriter来序列化属性名称,但它也改变了dicionary键。 public class CustomJsonWriter : JsonTextWriter { public CustomJsonWriter(TextWriter writer) : base(writer) { […]

Json.NET返回序列化Android.Gms.Maps.Model.LatLng对象列表的空对象

在序列化MapRoute对象时,我得到了这样的JSON数据: “{\”RouteName \“:\”route1 \“,\”RouteWaypoints \“:[{},{},{},{},{}]}” RouteWayPoints列表未正确序列化。 using Android.Gms.Maps.Model; using Newtonsoft.Json; using System.Collections.Generic; namespace App3.Model { public class Id { [JsonProperty(PropertyName = “$oid”)] public string id { get; set; } } public class MapRoute { public Id _id { get; set; } public string RouteName { get; set; } public List RouteWaypoints { get; set; } […]

使用Json和JavaScriptSerializer反序列化JSON结果

这是我的问题: 我正在尝试将我没有完成的json反序列化。 json的格式如下: {“responseId”:1200, “availableHotels”:[ {“processId”:”HA-84665605″,”hotelCode”:”UKKTLT”,”availabilityStatus”:”InstantConfirmation”,…}, {“processId”:”HA-28600965″,”hotelCode”:”UKKTLT”,”availabilityStatus”:”InstantConfirmation”,…}, {“processId”:”HI-63991185″,”hotelCode”:”UKJOVF”,”availabilityStatus”:”InstantConfirmation”,…} ], “totalFound”:9, “searchId”:”TP-84026455″} 以下课程: 具有以下属性的getAvailableHotelResponse: hotelObj可用的酒店 int totalFound 字符串responseId 字符串searchId hotelObj w / property: 酒店 酒店带有物业: 的ProcessID hotelCode availabilityStatus … 因此,我知道通过查看json可以看出它包含getAvailableHotelResponse对象的信息。 所以,我使用JsonConvert和JavaScriptSerializer尝试了以下内容: JavaScriptSerializer ser = new JavaScriptSerializer(); getAvailableHotelResponse availableResponse = ser.Deserialize(json); // Exception: “Type ‘com.hotelspro.api.getAvailableHotelResponse’ is not supported for deserialization of an array” List items = ser.Deserialize<List>(json); […]

将对象序列化为已包含一个JSON属性的JSON

为了提高性能,我将一个更大的操作结果作为JSON缓存在一个表中 – 与一个键列一起确定要返回哪一行。 所以数据看起来像这样: Id Json —- ——— 1 {“property”: “data”, “…”: “…”} 2 {“property”: “data”, “…”: “…”} 因此,我检索的对象具有int .Id和string .Json属性。 当使用Id返回这样的对象时,我首先需要反序列化JSON – 以便正确地重新序列化。 如果我不首先反序列化它,我最终得到一个带引号的字符串,即我的返回对象看起来像这样 { “id”: 1, “json”: “{\”property\”: \”data\”, … } 相反,我需要: { “id”: 1, “json”: { “property”: “data”, … } } 有没有办法“告诉”Json.Net序列化.Json直接输出.Json属性而不进行序列化 – 同时序列化其他属性?

尝试使用JSON.Net来使用SmartyStreets JSON ……“无法将JSON数组反序列化为类型组件”

我正在尝试使用SmartyStreets JSON LiveAddress API,我遇到了一些困难。 我承认我对JSON不太熟悉。 无论如何,我尝试了几种不同的方法,我通常最终得到错误“无法将JSON数组反序列化为类型元数据”。 这是JSON字符串: [{“input_index”:0,”candidate_index”:0,”delivery_line_1″:”1600 Amphitheatre Pkwy”,”last_line”:”Mountain View CA 94043-1351″,”delivery_point_barcode”:”940431351000″,”components”:{“primary_number”:”1600″,”street_name”:”Amphitheatre”,”street_suffix”:”Pkwy”,”city_name”:”Mountain View”,”state_abbreviation”:”CA”,”zipcode”:”94043″,”plus4_code”:”1351″,”delivery_point”:”00″,”delivery_point_check_digit”:”0″},”metadata”:{“record_type”:”S”,”county_fips”:”06085″,”county_name”:”Santa Clara”,”carrier_route”:”C058″,”congressional_district”:”14″},”analysis”:{“dpv_match_code”:”Y”,”dpv_footnotes”:”AABB”,”dpv_cmra”:”N”,”dpv_vacant”:”N”,”ews_match”:false,”footnotes”:”N#”}}] 我使用jsontocsharp webapp来创建类。 这是我正在使用的代码: using (var webClient = new WebClient()) { var json = webClient.DownloadString(“url”); var md = JsonConvert.DeserializeObject(json); litTest.Text = md.county_name; } 然后抛出我上面提到的错误。 任何帮助将不胜感激。 谢谢,安德鲁

Newtonsoft.Json将集合(带索引器)序列化为字典

我有一个类, FooCollection可以说,它实现了IEnumerable ,并且还提供了一个索引器,通过它可以通过名称查找Foo。 在function上它只是字典的只读。 但它并不是真正的字典,因为用户无法决定密钥。 无论如何,我希望JSON.NET将此对象序列化为JSON字典,而不是现在正在进行的数组。 在它上面粘贴JsonDictionaryAttribute不起作用:然后它什么都不做。 线索?

JSON.net反序列化

我有一个JSON编码的字符串。 我也有C#类: class Pupu{ public static List plist = new List(); public string user {get; set;} public string number {get; set;} } [{“user”:”27FFBADD7284E5CB98EAC45559589E28FDDDC3AD”,”number”:”62827″},{“user”:”27FFBADD7284E5CB98EAC45559589E28FDDDC3AD”,”number”:”30460″}, {“user”:”0D27D44D40C5185423078B3C93B3E6B596AD21A0″,”number”:”25143″}, {“user”:”0D27D44D40C5185423078B3C93B3E6B596AD21A0″,”number”:”22776″}, {“user”:”27FFBADD7284E5CB98EAC45559589E28FDDDC3AD”,”number”:”19755″}] 我希望它: plist = JsonConvert.DeserializeObject<List>(stringAbove); 我一直在: Attempt to access the method failed: System.Collections.Generic.List`1..ctor(); 谢谢,我现在正在寻找几个小时。 (我对C#很新)。

使用JSON.NET读取动态属性名称

我正在使用来自返回JSON的外部API的数据,如下所示。 { “data”: { “4”: { “id”: “12”, “email”: “q23rfedsafsadf”, “first_name”: “lachlan”, 使用JSON.NET,我如何获得4值? 这是动态的,因为它改变了每条记录(不是我用过的最理想的API)。

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反序列化后无法访问属性到动态

我在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 […]