c# - HttpResponseMessage 内容时出现无效占位符错误
问题描述
我正在编写一个单元测试并且必须返回响应对象。我能够返回以下响应
var res = new HttpResponseMessage()
{
StatusCode = HttpStatusCode.OK,
Content = new StringContent(string.Format("{{ 'email':'{0}', 'first_name':'{1}', 'last_name':'{2}', 'id':'{3}' }}", data.Email, data.FirstName, data.LastName, data.Id))
};
但现在需要将所有响应包装在“数据”属性中。对于这个更新的代码,如下所示
var res = new HttpResponseMessage()
{
StatusCode = HttpStatusCode.OK,
Content = new StringContent(string.Format("{{'data':{'email':'{0}','first_name':'{1}','last_name':'{2}','id':'{3}'}}}", data.Email, data.FirstName, data.LastName, data.Id))
};
但低于错误
消息:System.FormatException:输入字符串的格式不正确。堆栈跟踪: StringBuilder.FormatError() StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args) String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) String.Format(String format, Object[] args)
不知道这里有什么问题。请帮忙。
解决方案
您可以使用 Newtonsoft.Json
using System;
using Newtonsoft.Json;
using System.Text;
using System.IO;
public class Program
{
public static void Main()
{
var data = new
{
email = "data@ada.com",
first_name = "abc",
last_name = "abc",
id = 1
};
var data1 = new {data};
var s = new JsonSerializer();
var sb = new StringBuilder();
using (var w = new StringWriter(sb))
{
s.Serialize(w, data1);
}
Console.WriteLine(sb.ToString());
}
}
推荐阅读
- authentication - 无密码基于密钥的身份验证不起作用
- java - 为什么抛出 AccessDeniedException 时 Files.move() 会删除文件?
- javascript - 如何在 Angular 6 中向 Algolia ais-instantsearch 组件添加数字过滤器
- javascript - console.log 在文档滚动到结束时不会触发
- php - 文件夹中的图像被删除,但图像路径在 PHP 中未更新为 null
- powershell - 如何获取 Hyper-V 主机最近一小时的 CPU 使用率?
- .net - 使 ClickOnce 完全信任应用程序“绿色”
- azure - UserSecretsId 阻止将 F# ASP.NET Core 应用程序部署到 Azure 应用程序服务
- cordova-plugins - Crodova vk 插件不起作用[无法从清单文件中读取包名]
- python - Heroku python 应用程序抛出错误 - KeyError: 'pip._vendor.urllib3.util.queue'