首页 > 解决方案 > 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)

在此处输入图像描述

不知道这里有什么问题。请帮忙。

标签: c#asp.netasp.net-mvcasp.net-corexunit

解决方案


您可以使用 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());
    }
}

推荐阅读