- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用从 Controller 发送的对象来使用 Json 进行查看时遇到问题。
我使用 NewtonSoft.Json 7.x.x 将列表序列化为 Json,将对象列表发送到 View 。我正在使用以下代码进行序列化:
return JsonConvert.SerializeObject(DataToSend, Formatting.None, new JsonSerializerSettings()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
});
我有 2 个实体类:1)表格2) 表单字段
这两个实体之间存在一对多关系。
public class Form
{
public long ID { get; set; }
public string Name { get; set; }
public virtual List<FormField> FormFields { get; set; }
}
public class FormField
{
public long FormID { get; set; }
public string FieldLabel { get; set; }
public string FieldType { get; set; }
public string FieldValue { get; set; }
public virtual Form form { get; set; }
}
我正在尝试将 FormField 列表发送到 View 以使用 Javascript 进行渲染。我可以使用上面的序列化方法发送它。
但问题是,当我收到 Javascript 中的对象数组时。它具有 Json 引用对象 ID。我无法正常访问这些对象。
我能够渲染该数组中的第一个 FormField 值,但无法渲染其余的值。它以未定义的形式出现。
我附上了我在 UI 上收到的 JSON 对象值的屏幕截图。可以看到有一个Object数组。每个对象都应该具有 FormField 类型的对象,并且应该具有该字段的值,但没有。
只有索引 0 处的对象具有值,其余索引仅具有引用 ID。
请帮我解决这个问题。
谢谢
最佳答案
我不知道这是否是最好的解决方案,但我发帖是为了避免其他人寻找解决方案的麻烦。
我设法使用 .NET 扩展库插件来做到这一点。我没有使用 Newtonsoft.Json
,而是使用 System.Web.Extension
DLL。
我将属性ScriptIgnore
放入我的模型中:
public class Form
{
public long ID { get; set; }
public string Name { get; set; }
[ScriptIgnore]
public virtual List<FormField> FormFields { get; set; }
}
public class FormField
{
public long FormID { get; set; }
public string FieldLabel { get; set; }
public string FieldType { get; set; }
public string FieldValue { get; set; }
[ScriptIgnore]
public virtual Form form { get; set; }
}
然后,我使用 System.Web.Script.Serialization.JavaScriptSerializer 将其序列化为:
return new JavaScriptSerializer().Serialize(DataToSend);
它将序列化所有数据,但会忽略具有 ScriptIgnore
属性的属性,并且不会尝试序列化它们。对我来说,它按要求工作了。
刚刚了解到 NewtonSoft.Json
提供的属性 JsonIgnore
与 ScriptIgnore
执行相同的工作。因此,如果您正在使用 NewtonSoft 库,那么您也可以使用它。
很高兴知道有更多方法可以实现相同的结果;)
关于javascript - 使用 Jquery/Javascript 读取 NewtonSoft Json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32334654/
我在谷歌上花了很长时间,所以如果这是一个简单的修复请原谅我,但我找不到任何与 C# 中这个特定问题的修复相关的内容。 当尝试使用以下代码时,出现此错误: string obj = JsonConver
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 去年关闭。 Improve this
我正在尝试重新创建这个 json: { "request": { " TestRequest": { "OrderID": {
我正在测试我的 Web API。模拟数据我有这个: var objs = ((JArray)JsonConvert.DeserializeObject("{ \"PrintId\":10,\"Head
目前正在尝试使用 fixer.io API 在 C# 中创建货币转换。 我在从 Twitter API 解析 JSON 时使用了与下面类似的方法,并且没有任何问题,我不完全确定这里发生了什么。 API
我正在尝试建立 Mike Jansen 的 JIRA REST Client ,我正在尝试提取 JIRA 版本信息。我是 JSON 的新手,所以我不确定这只是格式问题还是什么。 调试时,我有以下标记:
我正在尝试使用 将对象动态序列化到即时窗口中 Newtonsoft.Json.JsonConvert.SerializeObject(myObj); 但是我得到以下错误 The type 'Newto
我无法在 Visual Studio 2013 中构建解决方案。 这发生在我将我的 JSON.NET 包更新到 6.0.1 之后。在此之前,它就像一个魅力。 有什么想法吗? PS:这可能是关于 OWI
当有如下代码时 var TermSource = token.Value("annotations") .Values("Term Source") .FirstOrDefault
我需要将选中的复选框代码从 JavaScript 传递给 C#。我能够通过 JSON 发送代码。我的 JSON 值以 JArray 的形式出现。我在标题中得到了异常(exception)。 JSON:
注意:解决重定向问题后,我遇到了另一个问题,即出现错误“无法将 Newtonsoft.Json.Linq.JArray 转换为 Newtonsoft.Json.Linq.JToken”。因此,在我的回
我有以下简单的 POCO: public class ApiKey { public ApiKey(string key, string owner, List claims = nu
我查过这个问题,但我没有看到太多答案,显然没有一个有帮助,否则我不会问。我是 .NET 新手。 我的本地环境是Win7,Microsoft Virtual Web Developer 2010 Exp
好的-我已经将这个问题打了几个小时。是时候寻求帮助了。 我刚刚将Web应用程序项目升级到ASP.NET MVC 4 RC和新的WebApi。 我的Web api方法现在返回EMPTY json“{}”
我想忽略类中的某些属性,但出于多种原因我想保留类 POCO。因此我不想引入对 Json.NET 的依赖,也不想使用 JsonIgnoreAttribute。 有没有办法自定义契约(Contract)解
我正在尝试修复我编写的 WinForms 程序中的错误;我正在解析一个 JSON 字符串,然后将一些结果放入各种变量中。 有时,JSON 的特定元素不存在(出于真正的原因),因此我尝试使用以下代码来处
我只是尝试使用 C# 中的 Newtonsoft JSON 库将文件中的一些 JSON 反序列化为对象列表。以下是 MeetingFile.txt 文件的内容: [ { "People":
这是一个非常奇怪的错误发生。我有这些对象: public class Mobile_SettingModels { public string Token { get; set; }
我粘贴了 http://www.codeproject.com/Tips/789481/Bridging-the-Gap-between-Linqpad-and-Visual-Studio 中的代码进
这个问题在这里已经有了答案: Can I optionally turn off the JsonIgnore attribute at runtime? (3 个答案) 关闭 4 年前。 我目前正
我是一名优秀的程序员,十分优秀!