内容 '\/Date('')\/' 未按照 JSON 的要求以 '\/Date(' 开头并以 ')\/' 结尾

2023-11-26

我想向 WCF 休息服务发送一个发布请求,如您所见:

Guid id;
id = Guid.NewGuid();

var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:47026/NewsRepository.svc/AddNews");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
    string json = new JavaScriptSerializer().Serialize(new
    {       
        id = id,
        Subject="wfwf",
        ViewerCounter="1",
        Content="fsdsd",
        SubmitDatatime="2012/12/12",
        ModifiedDateTime="2012/12/12",
        PublisherName="sdaadasd",
        PictureAddress="adfafsd",
        TypeOfNews="adsadaad"                       
    });

    streamWriter.Write(json);
}
try 
{ 
    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        var result = streamReader.ReadToEnd();
    }
}
catch(Exception er)
{
    MessageBox.Show(er.ToString());
}

但我收到错误 - 400 bad request。所以我跟踪我的 WCF 日志文件,发现了这个错误:

反序列化 CMSManagement.Domain.Entity.News 类型的对象时出错。日期时间内容“2012/12/12”不按照 JSON 的要求以“/Date(”开头并以“)/”结尾。

在我亲爱的朋友@svek 代码之后。结果是这样的:

Guid id;
id = Guid.NewGuid();

var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:47026/NewsRepository.svc/AddNews");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "PUT";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
    JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings
    {
        DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
    };

    string json = JsonConvert.SerializeObject(new
    {
        id = id,
        Subject = "wfwf",
        ViewerCounter = "1",
        Content = "fsdsd",
        SubmitDatatime = "2012/12/12",
        ModifiedDateTime = "2012/12/12",
        PublisherName = "sdaadasd",
        PictureAddress = "adfafsd",
        TypeOfNews = "adsadaad"
    }, microsoftDateFormatSettings);
    streamWriter.Write(json);
}
try 
{ 
    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        var result = streamReader.ReadToEnd();
    }
}
catch(Exception er)
{
    MessageBox.Show(er.ToString());
}

但我得到同样的错误。为什么?


使用 JsonConvert

而不是使用

string json = new JavaScriptSerializer().Serialize( new {...} );

use

//using Newtonsoft.Json;
string json = JsonConvert.SerializeObject(new {...} );

设置日期时间格式

在 Json.NET 4.5 之前,日期是使用 Microsoft 格式编写的:“/Date(1198908717056)/”。如果您想使用此格式,或者您想保持与 Microsoft JSON 序列化程序或旧版本的 Json.NET 的兼容性,请更改日期格式处理设置为 MicrosoftDateFormat。

Source: http://www.newtonsoft.com/json/help/html/DatesInJSON.htm

默认 Json.NET 4.5 格式

// default as of Json.NET 4.5
string isoJson = JsonConvert.SerializeObject(data);
// { "MyDateProperty":"2009-02-15T00:00:00Z" }

微软日期格式

JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings
{
    DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
};

string microsoftJson = JsonConvert.SerializeObject(data, microsoftDateFormatSettings);
// { "MyDateProperty":"\/Date(1234656000000)\/" }

JavaScript JSON 格式

string javascriptJson = JsonConvert.SerializeObject(data, 
    new JavaScriptDateTimeConverter());
// { "MyDateProperty":new Date(1234656000000)}

解决方案代码

这是您问题的完整工作解决方案:

JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings
{
    DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
};

string json = JsonConvert.SerializeObject(new
{
    id = id,
    Subject = "wfwf",
    ViewerCounter = "1",
    Content = "fsdsd",
    SubmitDatatime = "2012/12/12",
    ModifiedDateTime = "2012/12/12",
    PublisherName = "sdaadasd",
    PictureAddress = "adfafsd",
    TypeOfNews = "adsadaad"

}, microsoftDateFormatSettings); // ⇦ Added the format argument here

using (StreamWriter streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
    JsonSerializer serializer = new JsonSerializer();
    serializer.Serialize(streamWriter, json);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内容 '\/Date('')\/' 未按照 JSON 的要求以 '\/Date(' 开头并以 ')\/' 结尾 的相关文章

  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 当事件button.click发生时,如何获取按钮名称/标签?

    我以编程方式制作按钮并将它们添加到堆栈面板中 以便每次用户导航到页面时按钮都会发生变化 我正在尝试做这样的事情 当我单击创建的按钮时 它将获取按钮的标签并转到正确的页面 但是 我无法使用 RoutedEventHandler 访问按钮元素
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • 即使没有异步,CallContext.LogicalGetData 也会恢复。为什么?

    我注意到CallContext LogicalSetData LogicalGetData不按照我期望的方式工作 内部设置的值async方法得到恢复即使没有异步或任何类型的线程切换 无论如何 这是一个简单的例子 using System u
  • 如何从 html 页面 [javascript] 调用 Web 服务方法而不刷新页面

    我有一个webservice这将返回一个值 我的要求是 我需要调用它webservice从一个index html页面 该页面有一个 html 提交按钮 在该按钮上单击我正在呼叫JavaScript 从那里我想调用网络方法 我怎样才能做到这
  • 是否使用 C# 数据集? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 C 中的数据集概念有点困惑 编码 ASP NET 站点 但这并不重要 在我的阅读中 我了解到它们 本质上 用作我的应用程序和我的
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • Elm:如何从 JSON API 解码数据

    我有这个数据使用http jsonapi org http jsonapi org format data type prospect id 1 attributes provider user id 1 provider facebook
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • 模板类的模板构造函数的 C++ 显式模板特化

    我有一个像这样的课程 template
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • C++:为什么 numeric_limits 对它不知道的类型起作用?

    我创建了自己的类型 没有任何比较器 也没有专门化std numeric limits 尽管如此 由于某种原因 std numeric limits
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • 反序列化 JSON,属性名称中包含点

    我正在尝试将属性名称中带有点的 JSON 反序列化为键值格式 我正在使用内置的 ASP NET MVC 模型绑定 它似乎将点解释为对象表示法 而不仅仅是键值对象 有没有办法让它正确反序列化为忽略点的键值 这很重要 因为数据需要以这种格式再次
  • 如何在Angular2中上传文件

    我必须提交表格和图像 我已经尝试过这段代码 通过多种方式 但对我不起作用 有没有人有使用 angular2 上传文件的工作演示 请帮助我 组件 html
  • 根据背景反转油漆颜色

    我正在写一个自定义进度条 我想创建类似的效果 其中 50 文本颜色动态更改为白色 而黑色条向右移动 使用 简单 的解决方案可能吗 我查阅了 PorterDuff ColorFilters xFermodes 似乎没有任何效果 有任何想法吗
  • 如何禁用 Servlet 3.0 扫描和自动加载组件

    我们有一个应用程序不断从我们的第 3 方库加载 ServletContainerInitializer 实例 一个实例是 JerseyServletContainerInitializer 另一个实例是 SpringServletConta
  • 没有任何焦点的按键绑定

    我有一个 WPF 屏幕 有六个按钮 我想将每个与键绑定相关联 它们都是通过 MVVM 驱动的 ICommand 我目前将键绑定绑定到事件而不是实际的按钮
  • 基于 PHP 的 HTML 验证器

    我需要找到一个基于 PHP 的 HTML 如 WC3 Like 验证器 它可以查找无效的 HTML 或 XHTML 我在谷歌上搜索了一下 但很好奇是否有人使用过他们特别喜欢的 我有一个字符串中的 HTML html 我希望能够测试该页面并让
  • 使用 RPATH 构建 OpenSSL?

    我有 Ubuntu 14 04 它附带了 openssl 1 0 1f 我想安装另一个openssl版本 1 0 2 并且我想自己编译它 我将其配置如下 LDFLAGS Wl export dynamic L home myhome pro
  • 如何在 C++ 中声明接口?

    如何设置代表接口的类 这只是一个抽象基类吗 扩展答案布拉德格默里 您可能希望通过添加虚拟析构函数来对接口的纯虚拟方法列表做出一个例外 这允许您将指针所有权传递给另一方 而无需公开具体的派生类 析构函数不必执行任何操作 因为该接口没有任何具体
  • 什么是差一错误以及如何修复它?

    什么是差一错误 如果我有 我该如何修复它 An 相差一误差例如 当您打算执行循环 n 次并编写如下内容时 for int i 1 i lt n i or for int i 0 i lt n i 在第一种情况下 将执行循环 n 1 次 在第
  • Flurry 分析在 Windows Phone 7 中崩溃

    我已将 Flurry http www flurry com 集成到我的 Phone 7 应用程序中 唯一需要的代码是应用程序启动中的这一行 FlurryWP7SDK Api StartSession ApiKeyValue 但是 一旦命中
  • 是否可以在不使用 foreach 的情况下重新创建此语句? [复制]

    这个问题在这里已经有答案了 可能的重复 C 具有继承的泛型类型的 Is 运算符 是否可以在不使用 foreach 语句的情况下将类类型从 Deal 更改为 Deal Bookmark Wrapper 时将一个列表添加到另一个列表中 var
  • Java服务重启4、5次

    我正在运行 Java 服务来轮询数据库中的数据 在我的班级中 我有一个线程 它每 5 秒在数据库中查找数据 在特定时间 比如下午 6 点非工作时间 我让线程休眠到某个配置的时间延迟 问题 当我让线程休眠时 似乎我的 Java 服务已重新启动
  • 编写我自己的通用地图函数

    我正在尝试编写自己的通用程序map功能和以下是我想出的 def map A B CC X lt Traversable X That xs CC A f A gt B implicit cbf CanBuildFrom CC B That
  • 角度在 url 中的哈希之前添加斜杠

    当我尝试在 url 中添加哈希时 例如 a href whatever whatever a or window location hash whatever 它在哈希世界之前附加一个 gt www mysite com whatever
  • 使滚动条出现在 RMarkdown 代码块中(html 视图)

    我正在使用 RStudio 和 knitr 制作 RMarkdown 文档 我希望打印代码块而不在我创建的 html 文件上包装文本 我是否缺少一个停止代码文本换行的选项 到目前为止 我只发现了有关如何remove滚动条 让我觉得最近可能发
  • 当用户选择记录时,推荐使用哪种方式填充 Web 表单上的所有控件?

    我有一个 GridView 控件 它显示所有员工的列表 当用户从此列表中选择任何员工时 记录将显示在 Web 表单上 所有输入控件都预先填充了值 我想知道有什么好的方法可以做到这一点 我应该将所有输入控件绑定到任何 SqlDataSourc
  • 如何更改 Eclipse 中导航器视图的背景颜色?

    我没有找到任何选项 所以我怀疑某些视图遵循操作系统的颜色模式 我目前使用的是 OS X 似乎更改默认背景颜色也是不可能的 我想要完成的是创建一个深色背景主题 但自定义似乎只能在某些日食视图上进行 对于 eclipse 使用 gtk 的平台
  • .NET 3.5 SP1 中的 XmlSerializer 更改

    我看过很多关于 NET 3 5 SP1 中的更改的帖子 但昨天偶然发现了一篇我尚未看到的文档 我的代码在我的机器上运行得很好 从 VS msbuild 命令行等等 但它在构建服务器 运行 NET 3 5 RTM 上失败了 XmlRoot f
  • 即使应用程序被删除后也能收到推送通知 iPhone

    我在我的应用程序中实现了推送通知 它运行良好 现在的问题是 即使我从设备中删除了我的应用程序 它仍然会收到推送通知 那么 当从设备中删除应用程序时 有什么方法可以从推送通知中注销该应用程序 希望得到您的帮助 提前致谢 在苹果推送通知中有一个
  • 内容 '\/Date('')\/' 未按照 JSON 的要求以 '\/Date(' 开头并以 ')\/' 结尾

    我想向 WCF 休息服务发送一个发布请求 如您所见 Guid id id Guid NewGuid var httpWebRequest HttpWebRequest WebRequest Create http localhost 470