Tag: json

如何使用ASP.Net Web Api 2进行部分响应

我是API设计和MVC概念的新手,但据我所知,像GET / api / products这样的东西应该返回一个产品列表,而GET / api / products / 1应该返回一个产品。 在速度方面,我的感觉是/ api / products应该返回较少的信息,即id和name,而/ api / products / 1应该返回更多,即id,name和description。 据我所知,处理此问题的最佳方法是不在/ api / products端点中返回产品类的某些字段。 对于/ api / products?fields = name,这尤其必要。 我正在使用ASP.Net Web Api 2并尝试了以下方法: http://www.nuget.org/packages/WebApi.PartialResponse/ – 安装此软件包导致程序集版本错误。 在Product字段上添加ShouldSerialize方法。 由于我不会进入这里的原因,这种方法有点麻烦。 看看ASP.NET Web API部分响应Json序列化,但似乎没有一个确定的答案。 ASP.NET WebApi和Partial Responses建议使用包含所有可空字段的产品类。 我不确定我到底知道该做什么。 有什么简单的方法可以做我想做的事情吗? 否则你能建议一个比我正在做的更好的API设计吗?

反序列化期间JSON.Net忽略属性

我有一个课程设置如下: public class Foo { public string string1 { get; set; } public string string2 { get; set; } public string string3 { get; set; } } 我使用Json.Net反序列化以下Json响应: string json = “[{\”number1\”: 1, \”number2\”: 12345678901234567890, \”number3\”: 3}, {\”number1\”: 9, \”number2\”: 12345678901234567890, \”number3\”: 8}]”; 反序列化代码: List foos = JsonConvert.DeserializeObject<List>(json); 第二个数字超过int-64,但我并不真正关心检索该值。 有没有办法将’number2’属性转换为字符串,或者在反序列化期间完全忽略它? 我尝试将'[JsonConverter(typeof(string))]属性添加到string2属性,但收到错误:’创建System.String时出错’。 我也试过设置typeof(十进制)。 我也试过使用[JsonIgnore],但这不起作用。

使用C#HttpWebRequest将json发送到Web服务

我是JSON的新手,需要帮助。 我在jquery中使用了一些JSON,并从我在Web上运行的Web服务中正确地获取信息。 但是,我无法在C#中使用HttpWebRequest来使用它。 我将在下面发布代码。 /// /// Summary description for VBRService /// [WebService(Namespace = “http://test.visitblueridge.com/”)] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. [System.Web.Script.Services.ScriptService] public class VBRService : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return “Hello World”; } [WebMethod] [ScriptMethod(ResponseFormat = […]

Type是接口或抽象类,无法实例化

我将在前言中说我知道问题是什么,我只是不知道如何解决它。 我正在与.NET SOA数据层进行通信,该数据层将数据作为JSON返回。 一种这样的方法返回一个在其中包含多个集合的对象。 该对象基本上如下所示: { “Name”:”foo”, “widgetCollection”:[{“name”,”foo”}, {“name”,”foo”},], “cogCollection”: [{“name”,”foo”}, {“childCogs”,<>},], } 我的代表这个对象的类看起来像这样: public class SuperWidget : IWidget { public string Name { get; set; } public ICollection WidgetCollection { get; set; } public ICollection CogCollection { get; set; } public SuperWidget() { } [JsonConstructor] public SuperWidget(IEnumerable widgets, IEnumerable cogs) { WidgetCollection = new […]

将小数序列化为JSON,如何舍入?

我上课了 public class Money { public string Currency { get; set; } public decimal Amount { get; set; } } 并希望将其序列化为JSON。 如果我使用JavaScriptSerializer我会得到 {“Currency”:”USD”,”Amount”:100.31000} 由于API我必须符合需要JSON数量最多两个小数位,我觉得应该可以以某种方式改变JavaScriptSerializer序列化十进制字段的方式,但我不知道如何。 您可以在构造函数中传递SimpleTypeResolver ,但只有在我能理解的情况下它才适用于类型。 你可以通过RegisterConverters(…)添加的JavaScriptConverter似乎是为Dictionary做的。 我想得到 {“Currency”:”USD”,”Amount”:100.31} 在我序列化之后。 此外,改为双倍是不可能的。 我可能需要做一些舍入(100.311应该变成100.31)。 有谁知道如何做到这一点? 是否有JavaScriptSerializer的替代方案可以让您更详细地控制序列化?

在ASP.NET上创建JSON标头

我正在将脚本从PHP转换为ASP.net C#。 在PHP中,我可以使用类似的东西: header(’Content-type:text / json’); header(’Content-type:application / json’); 如何告诉我的aspx页面在标题中声明它正在打印JSON文件?

Json.Net可以处理List 吗?

List list = LoadUsers(); JObject json = new JObject(); json[“users”] = new JValue(list); 似乎不起作用? 错误: Could not determine JSON object type for type System.Collections.Generic.List`1

何时使用JsonResult而不是ActionResult

我一直无法找到关于这个问题的具体答案。 我已经查看了这个问题以及其他地方的post和后续post,但我真正读到的只是JsonResult有一个硬编码的内容类型,并且确实没有任何性能提升。 如果两个结果都可以返回Json,为什么需要在ActionResult上使用JsonResult。 public ActionResult() { return Json(foo) } public JsonResult() { return Json(bar) } 任何人都可以解释ActionResult无法完成工作并且必须使用JsonResult的情况。 如果没有,为什么JsonResult首先存在。

ExtJS:如何使用asp.net mvc返回json成功w / data

我正在尝试将ExtJS与Asp.Net MVC一起使用,到目前为止一切正常。 (在ExtJS上做得很好)为了简化操作,我需要一些帮助将数据从.net返回到ExtJS。 ExtJS希望在JSON Respone中看到成功标志以及其他数据。 样本预期响应格式是类似的 {success:true,data:{id:3,text:“hello world}} 所以,使用linq2sql或ado.net数据集作为模型对象,您是否知道如何以这种格式轻松返回数据。 就像是 public JsonResult Index() { result.success= true; result.obj = repository.FindAllUsers(); return Json(result) } 会顺便说一下吗? 如果我有一个具有bool成功和对象数据属性的ExtJSResult类? 提前致谢

通过Web API发送的字符串包含在引号中

我使用C#在ASP.NET 4中使用我的Web API遇到了一个小问题。 我正在尝试创建一个前端GUI,它通过多个Web API发送和接收数据。 拥有多个API的原因与我们的网络有关,该网络由多个安全区域组成。 服务器位于不同的区域,简单的请求可能需要通过3个不同的API。 具体来说,我正在从GUI向第一个API发送一个JSON对象。 应该将JSON对象转发到下一个API,然后从那里创建一个新的JSON对象,并在同一路径下返回。 路径本身很好用。 问题是JSON对象一旦返回GUI就无法解析。 我收到一个用引号括起来的JSON字符串,每个API一次。 字符串可能会像这样开始: 嘿! 我是一个字符串,或各种JSON对象! API之间的第一跳给了我: “嘿!我是一个字符串,或者是各种各样的JSON对象!” 在下一跳之后它看起来像这样: “\“嘿! 我是一个字符串,或者是各种各样的JSON对象!\“” 当我的GUI掌握它时,我们有这样的事情: “\”\“”嘿!我是一个字符串,或者是各种各样的JSON对象!\\“\”“ 这是解析失败的原因,原因很明显。 JSON对象本身格式正确,但所有引号都会导致JSON.net解析器出现问题(对象内的所有引号也会被多次包装)。 到目前为止我尝试过的是将请求作为application / json类型和text / plain类型发送。 两者都做了同样的事情。 API返回一个HttpResponseMessage,它使用ReadAsStringAsync()读取。 我也试图避免字符串读取,只是直接从HttpRequestMessage读取到HttpResponseMessage并仅在GUI中执行ReadAsStringAsync(),但问题仍然存在。 JSON字符串是使用JSON.nets Serialize() – 方法创建的,并使用StringContent()放入HttpContent。 这似乎正确地完成了工作。 我相信当API和GUI收到HttpResponseMessage时会生成引号。 知道我如何发送和接收JSON字符串作为原始字符串,这是不是以任何方式处理? 我可以通过在每个API上将对象解析为JToken或JObject并再次序列化来绕过此行为。 然而,这不是一个好的解决方案 – 我宁愿API只是按照他们获得它的方式转发消息,而不是对它做任何事情。 我使用路由查看了前进,但是有许多授权内容正在进行,这需要我使用API​​操作,而不是重定向路由。 澄清(TLDR):理想的解决方案是让API简单地传递消息而不解析或读取任何内容。 只要消息源被授权,请求就被加密并且请求的URL有效,消息本身对每个“代理”API都无关紧要。