Tag: json

反序列化大型json对象时出现JsonMaxLengthexception

介绍: Web应用程序,ASP.NET MVC 3,一种控制器操作,它接受具有(可能)大字段的POCO模型类的实例。 型号类: public class View { [Required] [RegularExpression(…)] public object name { get; set; } public object details { get; set; } public object content { get; set; } // the problem field } 控制器动作: [ActionName(…)] [Authorize(…)] [HttpPost] public ActionResult CreateView(View view) { if (!ModelState.IsValid) { return /*some ActionResult here*/;} … //do […]

C#中的JSON; 发送和接收数据

我正在尝试为请求和响应应用程序创建桌面客户端。 我能够轻松地完成GET请求。 但我想知道是否有人可以帮我弄清楚如何做JSON请求和响应。 并将其解析成一个字符串,从那里我可以锻炼如何将它全部切开

IEnumerable VS IList VS IQueryable

MVC.net场景的新手(以及.net),但是当我想要用数据填充“列表”时,我似乎找到了各种各样的选项。 在我的情况下,我想从一个选择的项目查询填充一个列表,并用JSON渲染结果输出,所以请耐心等待…. 所以,我的viewmodel类是这样的: [Serializable()] public class TFSquery { public int MsgUid { get; set; } public DateTime CreateStamp { get; set; } } 然后我想用我的查询输出填充它: List z = (from msg in _DB.Msg select new { msg.MsgUID, msg.CreateStamp }).ToList(); 那么我会将输出循环到我的List中,以便我可以在我的Json返回字符串中输出吗? 当我使用LIST VS IENUMERABLE VS IQUERYABLE ? return Json(new { Result = z }, JsonRequestBehavior.AllowGet);

如何使用JsonConverter仅序列化类的inheritance属性

我正在尝试使用json.net仅序列化类的inheritance属性。 我知道[JsonIgnore]属性,但我只想在某些场合忽略它们,所以我使用了自定义的JsonConverter。 这是我的class级: public class EverythingButBaseJsonConverter : JsonConverter { public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { // Find properties of inherited class var classType = value.GetType(); var classProps = classType.GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).ToList(); // Remove the overrided properties classProps.RemoveAll(t => { var getMethod = t.GetGetMethod(false); return (getMethod.GetBaseDefinition() != getMethod); […]

使用Newtonsoft C#从json转换为Enum

我如何将json反序列化为C#中的枚举列表? 我写了以下代码: //json “types” : [ “hotel”, “spa” ] public enum eType { [Description(“hotel”)] kHotel, [Description(“spa”)] kSpa } public class HType { List m_types; [JsonProperty(“types”)] public List HTypes { get { return m_types; } set { // i did this to try and decide in the setter // what enum value should be for each […]

如何使用JSON数据递归填充TreeView

我有一个winforms树视图,我可以自动读取数据,(一个等于key的节点,里面的节点等于value),但是当读取对象类型时,它内部的值不会是对象的子节点节点(对象的键),(也许我无法解释,这是截图和我的方法。) layer0需要在纹理内部,并且缩放需要在显示内部 我的杰森: { “parent”: “builtin/generated”, “textures”: { “layer0”: “mm:items/iron_dust” }, “display”: { “scale”: [ 1.7, 1.7, 1.7 ] } } 我自动检测的方法(实际上不是全部我的) private void Form1_Load(object sender, EventArgs e) { StreamReader reader = new StreamReader(path); string json = reader.ReadToEnd(); reader.Close(); JObject obj = JObject.Parse(json); getAllProperties(obj); } void getAllProperties(JToken children) { TreeNode mainNode = treeView1.Nodes[0]; mainNode.Text = […]

从流中加载多个连接的JSON对象

我读了几个类似的问题,但没有发现任何与JObject相关的问题。 这是问题所在:我有一个带有连接JSON对象的Stream,即: {“key1″:”value1”}{“key2″:”value2”}{“key3″:”value3”} 现在,我想逐个将这些对象读入JObject。 这是我试图这样做的方式: public class JsonStreamReader : JsonTextReader { public JsonStreamReader(Stream s) : base(new StreamReader(s)) {} } private void LoadJson(Stream s) { var r = new JsonStreamReader(s) { SupportMultipleContent = true }; var obj = JObject.Load(r); // … get data from JObject … } 这里的问题是JObject.Load()从流中读取所有可用数据,但只解析第一个对象并丢弃所有其余对象。 我该如何处理? 并且只是在XY问题的情况下(为什么我需要):我想通过TCP流传输JSON消息。 因为我使用原始TCP流,我需要知道要读取它的消息的大小。 我决定在每条消息之前编写带有size和message type小标题,因此我可以将标题读入一个小缓冲区,获取以下消息的大小然后完全读取它。

在反序列化期间选择性地转义字符串中的HTML

我正在寻找一个JsonConverter ,它在字符串中转义HTML,除非应用了[AllowHtml]属性; private class ObjectWithStrings { // will be HTML-escaped public string Name { get; set; } // won’t be escaped [AllowHtml] public string Unsafe { get; set; } } 所以我正在尝试用自定义的ReadJson属性编写JsonConverter; public override bool CanConvert(Type objectType) { return objectType == typeof(string); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var […]

在键值未知时反序列化JSON

如何在C#中使用JSON.net反序列化JSON,其中密钥值未知(它们是多个设备的MAC地址)。 可能有一个或多个密钥条目。 { “devices”: { “00-00-00-00-00-00-00-00”: { “name”:”xxx”, “type”:”xxx”, “hardwareRevision”:”1.0″, “id”:”00-00-00-00-00-00-00-00″ }, “01-01-01-01-01-01-01-01”: { “name”:”xxx”, “type”:”xxx”, “hardwareRevision”:”1.0″, “id”:”01-01-01-01-01-01-01-01″ }, } }

将StringEscapeHandling.EscapeNonAscii与Json.NET一起使用

最新版本的Json.NET(4.5.11)包含StringEscapeHandling.EscapeNonAscii,它可以转义所有非ASCII字符。 但是,我无法弄清楚将其作为参数传递到何处。 如果我尝试: JsonConvert.SerializeObject(myObj, Formatting.Indented, new JsonSerializerSettings { StringEscapeHandling = StringEscapeHandling.EscapeNonAscii}); 然后我得到编译错误: ‘Newtonsoft.Json.JsonSerializerSettings’ does not contain a definition for ‘StringEscapeHandling’