Tag: json.net

如何从.NET数据结构创建“锯齿状”对象的JSON数组

作为LINQ-to-Entities投影的结果,我最终得到了一个List ,如下所示,我手动创建它: List data = new List(); data.Add(new ChartDataRecord { date = 1370563200000, graph = “g0”, value = 70 }); data.Add(new ChartDataRecord { date = 1370563200000, graph = “g1”, value = 60 }); data.Add(new ChartDataRecord { date = 1370563200000, graph = “g2”, value = 100 }); data.Add(new ChartDataRecord { date = 1370563260000, graph = “g0”, […]

使用Json.Net序列化哈希表

我有一个哈希表,其键的类型为整数,但是当使用json.net进行反序列化时,键会以字符串forms返回,有没有办法使用json.net序列化/反序列化将键类型保留在哈希表上? 此哈希表是“MyType”类型的属性 var settings = new JsonSerializerSettings(); settings.TypeNameHandling = TypeNameHandling.Objects; string json = JsonConvert.SerializeObject(o, Formatting.Indented, settings); mo = JsonConvert.DeserializeObject(json, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects }); public Hashtable jsonViews { get { return mViews; } set { mViews = value; } }

将Iso8601TimeSpanConverter添加到JsonConverter列表会抛出ArrayTypeMismatchexception

我正在使用AutoRest从Swagger定义文件中为REST API自动生成ac#类。 问题是当执行客户端类初始化方法时,它会在以下代码中抛出ArrayTypeMismatchexception: SerializationSettings = new JsonSerializerSettings { Formatting = Formatting.Indented, DateFormatHandling = DateFormatHandling.IsoDateFormat, DateTimeZoneHandling = DateTimeZoneHandling.Utc, NullValueHandling = NullValueHandling.Ignore, ReferenceLoopHandling = ReferenceLoopHandling.Serialize, ContractResolver = new ReadOnlyJsonContractResolver(), Converters = new List { new Iso8601TimeSpanConverter() } } 令人讨厌的代码是添加到JsonConverters列表中的Iso8601TimeSpanConverter。 顺便说一句,这只发生在VSIX包中运行此代码时。 在独立的应用程序上,它工作正常。 我想知道它是否与多个版本的Newtonsoft.Json加载和碰撞有关? 有任何想法吗?

如何使用JSON.net引用外部文件?

这是我在JSON.net尝试读取我的JSON模式时遇到的错误( return JsonSchema.Read(new JsonTextReader(reader)); ): 2014-07-15 15:33:42.7011 [Fatal] Newtonsoft.Json.JsonException: Could not resolve schema reference ‘data-result.json’. at Newtonsoft.Json.Schema.JsonSchemaBuilder.ResolveReferences(JsonSchema schema) in c:\Development\Releases\Json\Work ing\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchemaBuilder.cs:line 139 at Newtonsoft.Json.Schema.JsonSchemaBuilder.ResolveReferences(JsonSchema schema) in c:\Development\Releases\Json\Work ing\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchemaBuilder.cs:line 179 at Newtonsoft.Json.Schema.JsonSchemaBuilder.Read(JsonReader reader) in c:\Development\Releases\Json\Working\Newtonsof t.Json\Src\Newtonsoft.Json\Schema\JsonSchemaBuilder.cs:line 85 at Newtonsoft.Json.Schema.JsonSchema.Read(JsonReader reader, JsonSchemaResolver resolver) in c:\Development\Releases\ Json\Working\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchema.cs:line 280 at Newtonsoft.Json.Schema.JsonSchema.Read(JsonReader reader) in c:\Development\Releases\Json\Working\Newtonsoft.Json\ Src\Newtonsoft.Json\Schema\JsonSchema.cs:line 266 at ThinkBinary.SchemaToPoco.Core.JsonSchemaToCodeUnit.LoadSchema(String file) […]

如何从嵌入式DLL中解析时正确使用JSON.NET?

我在Visual Studio中编写C#代码。 我在项目中添加了嵌入式DLL,我正在动态加载程序集。 我们使用JSON.NET来序列化和反序列化类型为Context.JobDataObj对象,该对象在其中一个嵌入式DLL中定义,并在各种程序之间传递DLL。 不幸的是,每当我尝试反序列化时,我都会收到以下错误: 在JSON中指定的类型’Context.JobDataObj,HPMContext,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null’与’Context.JobDataObj,HPMContext,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null’不兼容。 我查了JSON.NET源代码中的错误,错误是指IsAssignableFrom返回false …当我将DLL移出项目时,seralization和deseralization就像一个魅力。 更新: 我已经设法引入JSON.NET源代码并对其进行调试……显然,它是否使用嵌入式DLL之间的唯一区别是IsAssignableFrom的返回值: if(objectType!= null &&!objectType.IsAssignableFrom(specifiedType)) objectType在各种方式上都与specifiedType相等,我检查了它的所有程序集,类型,接口,成员等等。有谁知道IsAssignableFrom如何确定它的值?

如何创建一个属性包含点(句点)的json字符串?

我正在尝试发送一个HttpRequest ,它接受一个像这样的JSON对象: { “some.setting.withperiods”:”myvalue” } 我一直在为我的其他请求创建匿名对象,但由于名称包含一个点,因此我不能这样做。 我知道我可以创建一个类并指定[DataMember(Name=”some.setting.withperiods”)]属性,但必须有一个更轻量级的解决方案。

如何使用嵌套的对象数组反序列化JSON数组

我有一个JSON字符串,如下所示,并希望反序列化它: [[{“campaignId”:201410018,”programCode”:”54321″}],[{“campaignId”:201410018,”programCode”:”54321″}]] 我创建了一些类,如下所示: public class Rootclass { public List rootClass { get; set; } } public class JSONResponse { public int campaignId { get; set; } public string programCode { get; set; } } 我正在调用此JSON.NET方法来反序列化JSON: List myDeserializedObjList = (List)Newtonsoft.Json.JsonConvert.DeserializeObject(json, typeof(List)); 但我收到以下错误: Cannot deserialize JSON array (ie [1,2,3]) into type ‘JSON_Test.Rootclass’. The deserialized type must be […]

是否可以为DateTimeOffset的JSON.NET反序列化指定偏移量?

以下语句打印“1/1/0001 4:00:00 PM -05:00” Console.WriteLine(JsonConvert.DeserializeObject(“\”0001-01-01T16:00:00\””)); 这是因为当json.net将DateTime字符串(没有偏移量)反序列化为DateTimeOffset对象时,它会分配本地偏移量,在本例中为-05:00。 如果我不想使用本地偏移怎么办? 有什么方法可以指定用于此反序列化的偏移量吗? (用例是数据库服务器,Web服务器位于不同的时区,我需要具有区域未指定时间的传入请求,以便在反序列化后使数据库服务器具有偏移量。) 更新:我无法控制传入时间字符串的格式。 我有一个数据传输对象类,它具有DateTimeOffset属性,我需要将传入的时间数据存储到此属性。

将json动态反序列化为传入的任何对象.c#

我正在尝试将json反序列化为c#中的对象。 我希望能够做的是传递任何对象获取它的类型,并使用JSON.Net库将json反序列化为该特定对象。 以下是代码行。 Object someObject1 = someObject; string result = await content.ReadAsStringAsync(); return JsonConvert.DeserializeObject(result); 最后一行抛出exception operator ‘<' cannot be applied to operands of type 'method group' 如何在没有c#抱怨的情况下获取中的数据类型。 我该怎么做才能使这段代码有效? 我错过了什么知识?

将json的动态属性读入.net C#

我在点击API后得到了json格式: { “7407”: { “survey_id”: “406”, “device_id”: “1”, “response_time”: “2013-10-10 16:14:01”, “timezone”: “0”, “language_id”: “en”, “response_id”: “7407”, “device_alias”: “QR Code App”, “site_name”: “QR Code App”, “country_name”: “United States”, “state_name”: “New York”, “city_name”: “Suffern”, “zip”: “”, “voucher_name”: null, “voucher_mode”: null, “surveyee_name”: null, “surveyee_email”: null, “surveyee_phone”: null, “ques”: { “”: [] } }, “7408”: { “survey_id”: “406”, […]