Tag: json.net

使用Json.Net自定义DateTime序列化

我正在尝试创建自定义DateTime转换器失败。 问题:我有许多要序列化的对象,其中包含DateTime的一些包含DateTime.MinValue的属性。 我想将它序列化为null。 但是我要求在对象内部装饰正确的所有解决方案(我不能这样做)我在下面找到的其他解决方案,就是创建转换器,据我所知,这个转换器只能工作,只能明确返回DateTime对象而不是在其他对象内。 请帮忙。 public class DateTimeConverter : JsonConverter { private readonly Type[] types; public DateTimeConverter(params Type[] types) { this.types = types; } public override bool CanConvert(Type objectType) { return types.Any(t => t == objectType); } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { JToken t = JToken.FromObject(value); if (t.Type != JTokenType.Object) […]

使用C#将XDocument或XmlDocument转换为JSON

我有这个XML很棒: 但它输出到这个JSON: {“Products”:{“Product”:[{“@ProductCode”:”C1010″,”@CategoryName”:”Coins”}, {“@ProductCode”:”C1012″,”@CategoryName”:”Coins”}, {“@ProductCode”:”C1013″,”@CategoryName”:”Coins”}]}} 我想在我的json中没有’产品’分级,因为所有三行都是产品。 这是我的C#代码: //x is an XDocument. JsonConvert.SerializeXNode(x, Formatting.None, false) //JsonConvert.SerializeXNode(x); //I also tried without the formatting and the boolean. 当我’将’XDocument’转换为XmlDocument并使用: var xmlDocument = new System.Xml.XmlDocument(); using (var xmlReader = x.CreateReader()) { xmlDocument.Load(xmlReader); } JsonConvert.SerializeXmNode(xmlDocument); 它给了我完全相同的输出。 那么如何修改我的JSON解析,以便我有一个简单的产品列表。 我更喜欢最干净的解决方案。 或许更清楚一点,我这样的东西作为输出: [{“@ProductCode”:”C1010″,”@CategoryName”:”Coins”}, {“@ProductCode”:”C1012″,”@CategoryName”:”Coins”}, {“@ProductCode”:”C1013″,”@CategoryName”:”Coins”}]

在JSON.NET中修剪json字符串

我使用JObject.ToString()方法将JSON对象转换为字符串。 但是如何修剪输出以删除标记之间的空格?

JSON.Net反序列化包含特殊字符的字符串

如何使用包含特殊字符的值之一解析JSON字符串? JObject obj = JObject.Parse(str); str值: { “message”: “some !@#$%^&*(){}:”?/?/|”‘:>;><{"d":"v"}" } 我有execption: 解析一个值后遇到一个意外的字符:{。

将PHP数组转换为C#

我正在为第三方API编写C#客户端(我正在使用RestSharp nuget包)。 他们的文档包含PHP示例,我必须将其转换为C#。 他们的大多数样本都很简单,我已经能够将它们转换为C#,但我正在努力解决其中一个因为它接受一个数组数组。 以下是他们的文档中的示例: $params = array ( ‘user_key’ => ‘X’, ‘client_id’=> ‘X, ‘label’ => array( array( ‘language’ => ‘en_US’, ‘name’ => ‘English label’, ), array( ‘language’ => ‘fr_CA’, ‘name’ => ‘French label’, ), ), ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, ‘https://api.3rdparty.com/xxx/yyy’); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array(‘apikey: YOURAPIKEY’)); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, […]

JSON.NET Deserealization

我有下一个JSON回调: { “id”:”1″, “jsonrpc”:”2.0″, “result”:{ “articles”:[ { “date”:1367582340000, “id”:6917, “title”:”Some Title”, “author”:”Name Surname”, “event_date”:1367584560000, “text”:”blabla” } ] } } 我想使用JSON.NET反序列化它 我写了下一个代码: class News { private string jsonrpc; private string id; private Result result; [JsonProperty(“jsonrpc”)] public string Jsonrpc { get { return jsonrpc; } set { jsonrpc = value; } } [JsonProperty(“id”)] public string Id { […]

在Web API中将包含JToken的对象序列化为XML时的循环引用exception

在我的数据库中,我有一个包含许多列的表,其中一个包含一个JSON字符串(我无法控制它)。 像这样的东西: Name Age ExtraData —- — —————— Bob 31 {c1: “1”, c2: “2”} <– string with JSON 我的Web API端点必须返回XML或JSON,具体取决于请求中的Accept标头。 像这样的东西: JSON: { “Name”: “Bob”, “Age”: 31, “ExtraData”: { “c1”: 1, “c2”: 2 } } XML: Bob 31 1 2 为此,我在C#中创建了一个类,如下所示: public class Person { public string Name { get; set; } public int Age […]

使用自定义JsonConverter来改变对象部分的序列化

我很难重写自定义JsonConverter的WriteJson方法,以便稍微改变序列化的执行方式。 我需要调用REST服务,该服务接受具有通用部分的特定输入。 我可以使用以下有效内容格式重现我遇到的问题: public sealed class JsonField { public string Key { get; set; } public object Value { get; set; } public string OtherParam { get; set; } } public sealed class JsonPayload { public string Item1 { get; set; } public string Item2 { get; set; } public List Fields { get; set; […]

自定义JsonConverter,可以将decimal.MinValue转换为空字符串并返回

我需要为旧系统创建一个自定义JSON.NET转换器,用于标记空小数值… var nulldec = decimal.MinValue; (这是在引入可空类型之前创建的,并且改变它的工作方式将是大量的工作。) 当这些min值被序列化为JSON时,它们需要被序列化为空字符串。 当它们被反序列化时,如果值为空字符串,则需要转换为decimal.MinValue 。 这是我到目前为止(是的,不多)。 我认为这是一个简单的转换,但我没有看到任何文章指出我如何为我的情况工作,也没有任何关于如何创建自定义转换器的文档。 有人可以帮忙吗? public class DecimalJsonConverter : JsonConverter { public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { } public override bool CanConvert(Type objectType) { return typeof(System.Decimal).IsAssignableFrom(objectType); } }

C#Newtonsoft反序列化JSON数组

我正在尝试使用Newtonsoft对数组进行反序列化,因此我可以在列表框中显示来自基于云的服务器的文件,但无论我尝试什么,我总是会收到此错误: Newtonsoft.Json.JsonReaderException:’解析值时遇到意外的字符:[。 路径'[0] .priv’,第4行,第15位。’ 这是一个尝试反序列化的示例: [ { “code”: 200, “priv”: [ { “file”: “file.txt”, “ext”: “txt”, “size”: “104.86” }, { “file”: “file2.exe”, “ext”: “exe”, “size”: “173.74” }, ], “pub”: [ { “file”: “file.txt”, “ext”: “txt”, “size”: “104.86” }, { “file”: “file2.exe”, “ext”: “exe”, “size”: “173.74” } ] } ] 我尝试使用像这样的C#类: public class ListJson { [JsonProperty(“pub”)] […]