Tag: json

如何安全地将包含转义JSON的字符串转换为有效的JSON?

我正在与第三方API进行通信,该API返回JSON响应,如下所示: “{\”SomeResponse\”:{\”FIrstAttribute\”:8,\”SecondAttribute\”:\”On\”,\”ThirdAttribute\”:{\”Id\”:2,\”FirstName\”:\”Okkie\”,\”Name\”:\”Bokkie\”,\”Street\”:\”\”,\”StreetNumber\”:null,\”PostCode\”:\”\”,\”City\”:\”\”,\”Country\”:\”}}}” 它是一种JSON ……但是作为一个字符串。 注意第一个和结尾的双引号,当然还有所有的转义斜杠。 目前,我通过String解决这个问题。放置反斜杠以及第一个和最后一个引号。 在那之后,我能够解析它。 mystring.Replace(“\\”, “”); 但是,如果其中一个属性实际上有一个反斜杠作为值呢? 例如: \”SecondAttribute\”:\”My Super Back Slash: \\ . That was it.\” 在这种情况下,我会不小心删除值中应该存在的反斜杠。 有没有人对如何正确解析这个JSON字符串有一个好主意?

将字符串列表转换为json格式

如何转换字符串列表 List keys = new List() { “1-12VEXP”, “1-124DH9”}; 以json格式相同: [[“1-12VEXP”],[“1-124DH9”]] 在.net。 我正在使用Newtonsoft.Json。 任何帮助将不胜感激。

在ASP.NET和C#中使用服务器端的JSON

我有一个在客户端使用JQuery的ASP.NET Web表单。 我有一个用户界面,它构建一个对象集合并将它们存储在JSON中。 完成客户端实现后,我需要在用户单击按钮时处理该信息。 单击此按钮时,我需要遍历该JSON集合并validation条目。 我的问题是,我不知道该怎么做。 // Client-Side Code var myCollection = { “data”: [ ] }; // Server-Side Code protected void myButton_Click(object sender, EventArgs e) { // Parse JSON } 集合中的每个项目都存储在“data”属性中。 如何在服务器端循环访问JSON集合? 我想过将JSON数据放在隐藏的HTML元素中,但这听起来不太好,我想到了一个很好的方法。 谢谢

将对象列表转换为json数组

我有一个包含电子邮件地址和状态数据成员的类对象列表。 我试图将这些转换为json,确保在数组上有“操作”字样。 这是我的class级: class MyClass { public string email {get; set; } public string status { get; set; } } 这是我目前的代码(不是构建): List data = new List(); data = MagicallyGetData(); string json = new { operations = new { JsonConvert.SerializeObject(data.Select(s => new { email_address = s.email, status = s.status })) } }; 这是我想要获得的JSON: { “operations”: [ […]

Json.net反序列化null guid案例

我正在使用包含Guid类型的私有字段和该字段的公共属性的Json.NET反序列化对象。 当我的Guid的值在我的json中为null时,我想将Guid.Empty分配给我的字段。 public class MyClass { private Guid property; public Guid Property { get { return property; } set { if (value == null) { property = Guid.Empty; } else { property = value; } } } } 但是deserializer想要访问私有字段,因为当我尝试反序列化时出现此错误: 将值{null}转换为类型’System.Guid’时出错。 路径'[0] .property’,第6行,第26位。 如何让它忽略私有字段并使用公共属性?

将JSON反序列化为多个C#子类之一

我有一个看起来像这样的json结构: “list”:[ { “type”:”link”, “href”:”http://google.com” }, { “type”:”image”, “src”:”http://google.com/logo.png” }, { “type”:”text”, “text”:”some text here” }, ] 我想将其反序列化为对象列表,其中每个对象都是基类的子类。 列表中的每个项目都有不同的属性(href,src,text),因此我不能使用相同的类来获取一个。 相反,我想要一个普通类的三个子类。 JSON列表中每个项的type属性可用于决定使用哪个子类。 例如,我可以拥有以下类 public Item{ public string type {get; set;} } public LinkItem : Item { public string href {get; set;} } public ImageItem : Item { public string src {get; set;} } public TextItem : […]

使用JSON.NET为对象序列化动态属性名称

我正在使用JSON.NET来序列化我的对象以连接到REST API。 我的对象中需要序列化为JSON的属性之一具有动态属性名称。 如果此属性的struct中包含的值是数值,则JSON属性为“type_id”,但如果此值为字符串值,则JSON属性名称为“type_code”。 我尝试使用自定义JsonConverter ,但是当我尝试序列化时,我收到带有此消息的JsonWriterException : “状态属性中的Token PropertyName将导致无效的JSON对象。路径”。” 下面是我的对象的子集,如下所示我没有在我的对象中指定属性名称,因为: [JsonProperty(“title”,Required=Required.Always,Order=1)] public string Title { get; set; } [JsonProperty(“date”,Order=3)] [JsonConverter(typeof(IsoDateTimeConverter))] public DateTime Date { get; set; } [JsonProperty(Order=2)] [JsonConverter(typeof(TypeIdentifierJsonConverter))] public TypeIdentifier DocTypeIdentifier { get; set; } 在TypeIdentifier类中,我在WriteJson()方法中有以下内容: public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { TypeIdentifier docTypeId; id= (TypeIdentifier) value; writer.WritePropertyName(id.ParameterName); writer.WriteValue(id.Value); } […]

解析非标准JSON

任何人都知道什么类型的JSON(如果是这样!)以下代码是什么? 我正在从网站的HTML中检索这个。 我正在尝试使用JSON解析器在C#中解析它,但我必须进行大量的预备编辑,根据JSONLint将其格式化为“有效”JSON。 例如,变量的名称都应该有双引号而不是没有引号。 { status: ‘A’, displayed: ‘Y’, start_time: ‘2010-11-2600: 00: 00′, start_time_xls: { en: ’26thofNov201000: 00am’, es: ’26Nov201000: 00am’ }, suspend_at: ‘2010-11-2619: 57: 59’, is_off: ‘Y’, score_home: ”, score_away: ”, bids_status: ”, period_id: ”, curr_period_start_time: ”, score_extra_info: ”, ev_id: 2257335, blurb: ”, last_mkts_of_day: false, follow_hcap_mkt: 10999896 } 这将始终具有相同的格式,我很乐意直接将其解析为C#或java中的对象。

如何序列化从Dictionary派生的类

我试图使用Json.Net将以下类与Json序列化/反序列化: public class ChildDictionary:Dictionary { public string Name { get; set; } } 我在这里 , 这里和这里找到了相关的信息,但没有一个具体涉及我们从Dictionary派生的这种情况的语法应该是什么样的。 员工自己与Json.Net成功序列化。 它看起来像这样: [JsonObject(MemberSerialization.OptIn)] public class Employee { [JsonProperty] public string Name { get; set; } [JsonProperty] public double Factor { get; set; } [JsonProperty] public List LoadBuilders = new List(); [JsonConstructor] public LoadCause(string name, double factor, List loadBuilders) { […]

无法反序列化包含$ ref键的JSON

我有以下代码尝试反序列化JSON字符串,该库给我这个错误: 在JSON参考对象中找到的其他内容。 JSON引用对象应该只有$ ref属性。 路径’user.obj’,第1行,第34位。 知道什么是错的吗? (我知道它抱怨第二个$ ref,但我不知道为什么。)解决方法是什么? void Main() { var s = “{\”user\”: {\”$ref\”: \”123456\”, \”obj\”: {\”$ref\”: \”123456\”}}}”; JsonConvert.DeserializeObject(s).Dump(); } // Define other methods and classes here public class Root { [JsonProperty(“user”)] public User User { get; set; } } public class User { [JsonPropertyAttribute(“$ref”)] public string Ref { get; set; } [JsonPropertyAttribute(“obj”)] […]