Tag: 反序列化

无法反序列化我的json

这是我的class级 实际上需要转换为良好的json数据的初始数据。 这是最初的坏事 { “channels”: { “heart-rate”: { “events”: { “$type”: “System.Collections.Generic.List`1[[Project.Model.Activity+Channel+Event, Project]], mscorlib”, “$values”: [{ “$type”: “Project.Model.ChannelEvents.HeartRateChannelEvent, LTF.MyPlan.ActivityUtil”, “beatsPerMinute”: 40, “offset”: 0 } ] } }, “location”: { “events”: { “$type”: “System.Collections.Generic.List`1[[Project.Model.Activity+Channel+Event, Project]], mscorlib”, “$values”: [{ “$type”: “Project.Model.ChannelEvents.LocationChannelEvent, Project”, “latitude”: 0.0, “longitude”: 0.0, “offset”: 0 } ] } } } } public class LocationChannelEvent […]

Mongo DB对象Id使用JSON序列化程序进行反序列化

var docToJson = doc.ToJson(); story Featured = JsonConvert.DeserializeObject(docToJson); public class story { [JsonProperty(“_id”), JsonConverter(typeof(ObjectIdConverter))] public ObjectId Id { get; set; } …. public class ObjectIdConverter : JsonConverter { public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { serializer.Serialize(writer, value.ToString()); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JToken token […]

如何将json对象反序列化为特定的子类?

我有一个Cabin类,其中包含Row对象列表。 我想序列化这样的对象,但是当反序列化时,我希望Row对象是RowRule对象,它inheritance自Row对象。 下面是我一直在尝试的一些示例代码。 class Program { static void Main(string[] args) { var cabin = new Cabin(); var row = new Row(); row.Status = “Success”; cabin.Rows = new List() { row, row }; JsonSerializerSettings settings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Auto }; string json = JsonConvert.SerializeObject(cabin, Formatting.Indented, settings); Console.WriteLine(json); Cabin obj = JsonConvert.DeserializeObject(json, new JsonSerializerSettings() […]

反序列化后初始化私有只读字段

我需要在反序列化后初始化私有只读字段。 我有以下DataContract: [DataContract] public class Item { public Item() { // Constructor not called at Deserialization // because of FormatterServices.GetUninitializedObject is used // so field will not be initialized by constructor at Deserialization _privateReadonlyField = new object(); } // Initialization will not be called at Deserialization (same reason as for constructor) private readonly object _privateReadonlyField […]

在JSON反序列化期间,没有为’System.String’类型定义无参数构造函数

这看起来应该很容易,但是当我尝试将一些简单的JSON 反序列化为托管类型时,我会遇到exception。 例外是: MissingMethodException 没有为’System.String’类型定义无参数构造函数 虽然System.String没有无参数构造函数,但我不清楚为什么这很重要。 执行反序列化的代码是: using System.Web.Script.Serialization; private static JavaScriptSerializer serializer = new JavaScriptSerializer(); public static MyType Deserialize(string json) { return serializer.Deserialize(json); } 我的类型大致是: public class MyType { public string id { get; set; } public string type { get; set; } public List location { get; set; } public Address address { […]

Newtonsoft Json将字典反序列化为DataContractJsonSerializer中的键/值列表

我有一个字典序列化存储与DataContractJsonSerializer,我想用Newtonsoft.Json反序列化。 DataContractJsonSerializer已将Dictionary序列化为键/值对列表: {“Dict”:[{“Key”:”Key1″,”Value”:”Val1″},{“Key”:”Key2″,”Value”:”Val2″}]} 是否有任何很酷的选项我可以给JsonConvert.DeserializeObject() ,它将支持该数据格式和Newtonsoft.Json的格式? {“Dict”:{“Key1″:”Val1″,”Key2″:”Val2”}} 是Newtonsoft.Json创建的漂亮格式,我希望能够在过渡期内同时读取旧的DataContract格式和新的Newtonsoft格式。 简化示例: //[JsonArray] public sealed class Data { public IDictionary Dict { get; set; } } [TestMethod] public void TestSerializeDataContractDeserializeNewtonsoftDictionary() { var d = new Data { Dict = new Dictionary { {“Key1”, “Val1”}, {“Key2”, “Val2”}, } }; var oldJson = String.Empty; var formatter = new DataContractJsonSerializer(typeof (Data)); using […]

无法使用XML反序列化器将XML反序列化为列表

这是从我之前的问题继续使用XML序列化序列化接口列表 public class MeterWalkOrder { public MeterWalkOrder() { Meters = new List(); } public String Name { get; set; } [XmlIgnore] public List Meters { get; set; } [XmlArrayItem(ElementName = “Meter”)] [XmlArray(ElementName = “Meters”)] public List SerializableMeters { get { return Meters.Cast().ToList(); } set { Meters = new List(value); } } } public interface IMeter […]

在C#中反序列化JSON数组

我遇到了一个棘手的问题。 我有一个这种格式的JSON字符串: [{ “record”: { “Name”: “Komal”, “Age”: 24, “Location”: “Siliguri” } }, { “record”: { “Name”: “Koena”, “Age”: 27, “Location”: “Barasat” } }, { “record”: { “Name”: “Kanan”, “Age”: 35, “Location”: “Uttarpara” } } … … ] “记录”中的字段可以增加或减少。 所以,我做了这样的课程: public class Person { public string Name; public string Age; } public class PersonList { […]

处理Newtonsoft.Json中的十进制值

我有一个MVC应用程序,我在其中处理一些JSON。 这很简单。 我在ModelBinder中有这么简单的代码: return JsonConvert.DeserializeObject(jsonString, bindingContext.ModelType, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore, Formatting = Formatting.None, DateFormatHandling = DateFormatHandling.IsoDateFormat, FloatParseHandling = FloatParseHandling.Decimal }); 它完美无瑕。 好吧,有点。 假设我有这个课程: public class MyClass { public decimal MyProp { get; set; } } 如果我尝试反序列化这个json: “{\”MyProp\”: 9888.77}” 当然它可以工作,因为9888.77是一个Javascript浮点值。 我认为。 但是我的页面中有一个屏蔽输入,使得JSON看起来像这样(对不起我的英文): “{\”MyProp\”: \”9.888,77\” }” AAAND,它失败了。 它说它Could not convert string to […]

使用C#反序列化JSON

在尝试在C#中反序列化JSON时,发现在获取信息方面存在一些困难。 我有以JSON格式返回的Google自定义搜索结果。 我只想查看我的步骤并确定顺序以尝试反序列化它。 这是正确的吗? 我需要创建匹配JSON格式的类。 有点像创建模式文件。 使用JavaScriptSerializer()类和deserialize方法来提取相关位。 我认为我将遇到的一个问题是我不需要返回所有数据,只需要html链接。 我怎样才能做到这一点? UPDATE 我已使用以下JSON代码段和C#代码更新了我的问题。 我想将字符串’links’输出到控制台,但它似乎没有工作。 我想我错误地定义了我的课程? Google自定义搜索中的JSON handleResponse({ “kind”: “customsearch#search”, “url”: { “type”: “application/json”, “template”: “https://www.googleapis.com/customsearch/v1?q\u003d{searchTerms}&num\u003d{count?}&start\u003d{startIndex?}&hr\u003d{language?}&safe\u003d{safe?}&cx\u003d{cx?}&cref\u003d{cref?}&sort\u003d{sort?}&alt\u003djson” }, “queries”: { “nextPage”: [ { “title”: “Google Custom Search – lectures”, “totalResults”: 9590000, “searchTerms”: “lectures”, “count”: 1, “startIndex”: 2, “inputEncoding”: “utf8”, “outputEncoding”: “utf8”, “cx”: “017576662512468239146:omuauf_lfve” } ], “request”: [ { “title”: […]