【问题标题】:Getting invalid json primative获取无效的 json 原语
【发布时间】:2017-10-10 20:53:59
【问题描述】:

嘿,我有一个奇怪的问题,我无法弄清楚。基本上我正在尝试发出一个简单的 httpClient 发布请求,但我不断收到“无效的 json 原语:”。我检查了https://jsonlint.com/,它说这是有效的 json,但我的应用程序另有说明。任何信息将不胜感激?

string test = "{\"CurrentUser\":null,\"Stacktrace\":\"System.UnhandledExceptionEventArgs\",\"OtherData\":null,\"UserInput\":\"\",\"TimeStamp\":\"2017-10-10T16:48:58.606512-04:00\"}"

 HttpContent httpContent = new StringContent(test);
 await httpClient.PostAsync("/api/logException", httpContent);

客户端初始化如下:

 httpClient = new HttpClient();
 httpClient.BaseAddress = new Uri(this.serverURL);
 httpClient.Timeout = TimeSpan.FromSeconds(400);

【问题讨论】:

  • 能否请您展示一下您是如何初始化 HttpClient 的?
  • 完成了,但我认为这里没有什么特别之处。我实际上可以做其他发布请求,但这个特定的请求似乎是问题所在。如果它有助于将未处理的异常记录到数据库中
  • 刚刚构建并运行了它,一切似乎都运行良好。我认为问题应该在你的配置中更深层次的地方。
  • 您能查看/api/logException 端点吗?此外,如果您可以发布完整的异常详细信息(例如错误消息和堆栈跟踪),将会很有帮助。

标签: c# json httpclient


【解决方案1】:

与其自己编写 JSON 格式(容易出错),不如简单地创建一个对象并将其序列化为 JSON。让 c# 完成繁重的工作。首先创建一个类:

public class Model
{
   public string CurrentUser { get; set; } = null;
   public string Stacktrace { get; set; } = "System.UnhandledExceptionEventArgs";
   public string UserInput { get; set; } = String.Empty;
   public string OtherData { get; set; } = null;
   public string TimeStamp { get; set; } = "2017-10-10T16:48:58.606512-04:00";
}

然后初始化这个类的一个对象,简单的用JavaScriptSerializer序列化成json:

Model md = new Model();
System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer();
var json = ser.Serialize(md);

结果将在 json 中:

{"CurrentUser":null,"Stacktrace":"System.UnhandledExceptionEventArgs","UserInput":"","OtherData":null,"TimeStamp":"2017-10-10T16:48:58.606512-04:00"}

【讨论】:

    【解决方案2】:

    我不是专家,但由于没有其他人回应,也许您只需将内容类型设置为 JSON?

    HttpContent httpContent = new StringContent(test, Encoding.UTF8, "application/json");
    

    POSTing JsonObject With HttpClient From Web API

    【讨论】:

    • 我也试过了,但也没有运气。
    【解决方案3】:

    尝试String.Replace("\", string.Empty) 到您的 json。也许这会奏效。

    【讨论】:

      【解决方案4】:

      您好,感谢您的回答。你们都是正确的,我很感激你的帮助。问题最终实际上不是 json。基本上这个错误在我认为它被处理之后传播并且实际上出现了两次。所以我认为它告诉我存在无效 json 的地方(它正在破坏的地方)实际上是它从更远的代码重复相同的错误消息。

      再次感谢。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-29
        • 1970-01-01
        • 1970-01-01
        • 2019-08-24
        • 2013-07-16
        • 2012-08-11
        相关资源
        最近更新 更多