You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何将字符串转换为JsonObject?(Product类单元测试场景)

问题:如何将JSON字符串转换为JsonObject类型?

定义的Product类

public class Product  
{
    public string id  { get; set; }
    public JsonObject details { get; set; }
}

POST请求中details的示例数据

{
   "id": "1",
   "type": "icecream",
   "name": "Vanilla Cone",
   "image":
         {
           "url": "img/01.png",
           "width": 200,
           "height": 200
         }
 }

测试遇到的问题

编写单元测试时,尝试直接给details赋值JSON字符串:

details = "\{ \"id\":\"1\", \"type\": \"icecream\"}, "

触发了无法将string类型转换为JsonObject的错误,需要解决字符串转JsonObject的问题。


解决方法

根据你使用的JSON处理库,有两种常见的转换方式:

1. 使用.NET内置的System.Text.Json(默认推荐)

如果项目基于.NET Core/.NET 5及以上版本,直接用JsonObject.Parse()方法即可完成转换,同时注意修正原JSON字符串的语法错误(去掉多余逗号、修正转义):

// 正确的JSON字符串,也可以用逐字字符串@""简化转义
string jsonDetails = "{ \"id\":\"1\", \"type\": \"icecream\" }";
// 直接解析为JsonObject
product.details = JsonObject.Parse(jsonDetails);

也可以用JsonSerializer.Deserialize方法实现同样效果:

product.details = JsonSerializer.Deserialize<JsonObject>(jsonDetails);

2. 使用Newtonsoft.Json(Json.NET)

如果项目依赖Newtonsoft.Json库,注意该库中对应的类型是JObject,需要先确保Product类的details字段类型为JObject,然后用JObject.Parse():

string jsonDetails = "{ \"id\":\"1\", \"type\": \"icecream\" }";
product.details = JObject.Parse(jsonDetails);

额外注意

你之前的赋值字符串存在语法问题:"\{ \"id\":\"1\", \"type\": \"icecream\"}, "多了结尾的逗号,且大括号前无需加反斜杠(除非在字符串插值表达式中),建议改为逐字字符串格式避免转义错误:

string jsonDetails = @"{ ""id"":""1"", ""type"": ""icecream"" }";

内容的提问来源于stack exchange,提问作者Krypto456

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:55:30