Tag: json

Null-coalescing运算符为动态对象的属性返回null

我最近在使用Json.NET将JSON解析为动态对象时发现了null-coalescing运算符的问题。 假设这是我的动态对象: string json = “{ \”phones\”: { \”personal\”: null }, \”birthday\”: null }”; dynamic d = JsonConvert.DeserializeObject(json); 如果我尝试使用?? 运算符在d的一个字段上,它返回null: string s = “”; s += (d.phones.personal ?? “default”); Console.WriteLine(s + ” ” + s.Length); //outputs 0 但是,如果我将动态属性分配给字符串,那么它可以正常工作: string ss = d.phones.personal; string s = “”; s += (ss ?? “default”); Console.WriteLine(s + ” ” […]

提取部分JSON响应

我是编程新手。 我目前正在开发一个map函数,它需要我在当前位置和最终位置之间获取方向,但我不知道如何从JSON RESPONSE中提取文本。 这个JSON响应是从api生成的。 这只是JSON响应的一部分。 { “attributes” : { “length” : 0.094387438, “time” : 0.2831, “text” : “Go west on _________”, “ETA” : 1365037200000, “maneuverType” : “esriDMTStraight” }, “compressedGeometry” : “+1+t1b+170r-2f-ae-2” } 我希望在我显示的代码中提取“文本”以将其显示在列表框中。 任何帮助都感激不尽。

如何将JSON反序列化为正确类型的对象,而不必事先定义类型?

我搜索了类似的问题,找不到任何与我想要的相匹配的东西。 C#的新手请耐心等待。 我有一些json文件,我正在反序列化。 我希望文件反序列化为正确类型的对象,而不必事先定义类型。 这是我的代码: public class loadJson { //path of the file location public void readJson(string path) { //array of files at the path location. right now just reading one file FileInfo[] files = new DirectoryInfo(path).GetFiles(“seleniumExample.json”).ToArray(); foreach (FileInfo fi in files) { dynamic b1 = null; using (StreamReader file = new StreamReader(fi.FullName)) { string […]

在Newtonsoft.json中,ReferenceLoopHandling.Ignore究竟做了什么?

任何人都可以向我展示可以使用它的场景。 我通过ReferenceLoopHandling.Ignore理解的是,如果你有一个对象A引用对象B和B引用C和C再次引用A(A-> B-> C-> A),那么在序列化时,它将最终无穷无尽在C和A之间循环,可以使用下面的方法避免。 我对吗? JsonConvert.SerializeObject(data, Formatting.Indented, new JsonSerializerSetting() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore } )); 我有自我引用循环问题,通过使用上面的问题得到解决,但我想知道它正在做什么,因为上面的行是应用程序的关键(关键肉)

我怎样才能在C#中反序列化json中的表情符号

我有一个包含表情符号的json文件,当我想反序列化时,它无法将表情符号反序列化为字符串。 我的代码是: var mystring ={“message”:”jjasdajdasjdj laslla aasdasd ssdfdsf!!! 🙌\u{1F3FD}”, “updated_time”:”2015-04-14T22:37:13+0000″, “id”:”145193995506_148030368559″} FaceBookIdea ideaDetails = JsonConvert.DeserializeObject((mystring).ToString()); 错误是: {“Input string was not in a correct format.”} 当我删除表情符号时,它运作良好。 非常感谢你的帮助

要反序列化的对象有一个C#关键字

在按原样定义JSON的情况下,为了将其反序列化为对象,我需要在我的类上创建一个名为“event”的属性,它是一个C#关键字。 还有另一种方法可以告诉它字段名称是什么吗? 这是JSON的一个例子: {event:123 data:{“data”:“0D0401”,“ttl”:“60”,“published_at”:“2014-04-16T18:04:42.446Z”,“id”:“48ff6f065067555031192387”}} 以下是因为关键字而无法编译的类: public class Event { public int event { get; set; } public EventDetail data { get; set; } } public class EventDetail { public string data { get; set; } public string ttl { get; set; } public DateTime published_at { get; set; } public string id { get; […]

将数组作为JSON发布到MVC控制器

我一直在努力寻找这个问题的解决方案。 在我的代码中,我正在构建一个对象数组; var $marks = []; var mark = function ( x, y, counter ){ this.x = x; this.y = y; this.counter = counter; } $marks.push(new mark(1, 2, 0)); $marks.push(new mark(1, 2, 1)); $marks.push(new mark(1, 2, 2)); 现在我想将这些数据发布到MVC控制器,所以我认为控制器中的数据类型将是List Marks或Marks数组。 为了发布数据,我试过了; var json = JSON.stringify($marks); $.post(‘url’, json).done(function(data){ /* handle */ }); 要么 var json = { […]

Json.NET中的JConstructor和JRaw

根据StackOverflow上的这个答案: Json.NET包含许多不属于JSON规范的function。 特别是,它允许解析一些“正式”无效的JSON文件。 这包括不带引号的属性,注释,构造函数等。 这些是从JToken分配的所有类型: JArray JConstructor JContainer JObject JProperty JRaw JValue 请告诉我们以下是否属实: “正式”有效的json上的JToken.Parse(json)在其后代中包含JConstructor或JRaw 。 如果json是“正式”有效的,那么在这些后代中只能看到以下类型: JArray , JObject , JProperty , JValue 。

使用匹配的花括号拆分字符串的最佳方法

我正在使用C#,我正在使用JSON.Net将json字符串解析为C#对象。 我的部分问题是我得到了一些像这样的字符串: {“name”: “John”}{“name”: “Joe”} 当我尝试使用JsonConvert.DeserializeObject反序列化时,它会抛出exception。 我想知道将这个更大的字符串拆分成更小的json字符串的最佳方法是什么。 我正在考虑通过字符串和匹配“0级”的花括号。 这看起来是个好主意吗? 或者有更好的方法来做到这一点?

如何在JObject中添加或更新JProperty值

我目前正在使用以下扩展方法来执行此任务,但似乎应该有一些现有的包含方法或扩展来执行此操作(或至少是其中的一部分)。 如果Json.NET中没有任何内容,那么建议的过程是什么,或者我如何更改下面的代码以更接近推荐的过程。 public static partial class ExtensionMethods { public static JObject SetPropertyContent(this JObject source, string name, object content) { var prop = source.Property(name); if (prop == null) { prop = new JProperty(name, content); source.Add(prop); } else { prop.Value = JContainer.FromObject(content); } return source; } } 我可以确认上面的代码适用于基本用法,但我不确定它是否适用于更广泛的用法。 我有这个扩展返回一个JObject的原因是你可以链接调用(对这个扩展或其他方法和扩展的多次调用)。 即 var data = JObject.Parse(“{ ‘str1’: ‘test1’ }”); […]