为啥无法解析 Json 并显示原始结果?

Posted

技术标签:

【中文标题】为啥无法解析 Json 并显示原始结果?【英文标题】:Why can't parse Json and Raw Result is show?为什么无法解析 Json 并显示原始结果? 【发布时间】:2019-11-14 16:34:21 【问题描述】:

我想以正确的格式返回结果的主体,而不是原始结果。

  public class tbl_Product
     
   public tbl_Product()
    
        tbl_ProductPricing = new HashSet<tbl_ProductPricing>();
    

    public Guid Id  get; set;       
    public string ProductCode  get; set; 
    public string ProductName  get; set;         

    [InverseProperty("Product")]
    public virtual ICollection<tbl_ProductPricing> tbl_ProductPricing  get; set; 
 

以下是我返回时的 WebAPI 函数:

[HttpGet]
public async Task<ActionResult<ICollection<tbl_Product>>> GetProductList()

    return Ok(await _context.tbl_Product.Include(a => a.tbl_ProductPricing).ToListAsync());


但是,它返回的 格式 是这样的:

https://i.stack.imgur.com/BkDPy.jpg


我预期的格式是:

[
  
    "id": "dc9874d0-9808-11e9-990d-014e614ad9ed",
    "ProductName": "Orange",
    "ProductCode": "A001",
    "ProductPricing":
    [
     "id":"980874d0-014e-11e9-ad9e-114e614ad9ed",
      "Price":"5"
     
    ]
  ,
  
    "id": "90d874d0-9808-11e9-990d-014e614ad9ed",
    "ProductName": "Apple",
    "ProductCode": "A002",
    "ProductPricing":
    [
     "id":"ed0874d0-014e-11e9-ad9e-114e614ad9ed",
      "Price":"10"
     
    ]
  
 ]

我可以知道我的代码的哪一部分不正确吗?

【问题讨论】:

文字比图片更容易阅读。 你对比了实际的json结果和预期的结果吗?你发现它们之间有什么不同吗? 是的,结果是一样的,但是格式不一样。以某种方式返回原始结果而不是 Json。 i.stack.imgur.com/BkDPy.jpg WebAPI 不太可能生成无效的 JSON。您能否澄清一下您用来发送请求的内容以及原始响应的实际外观(as text inline in the question - edit post 这样做而不是评论图片链接)跨度> 你读过***.com/questions/40833162/…吗? 【参考方案1】:

这对我有帮助,你可以在你的状态上全局设置它

  public void ConfigureServices(IServiceCollection services)
    
       services.AddMvc().AddJsonOptions(options => options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore); 
    

【讨论】:

谢谢!你拯救了我的一天!这正是我所期望的!【参考方案2】:

您应该使用 Newtonsoft.Json.JsonConvert.SerializeObject() 手动格式化返回字符串;

那么格式就可以预测了

(旁白:我建议您粘贴结果字符串,以便我们可以详细比较两者,而不仅仅是一张没有显示整个响应的图片;运行差异将是我测试是否有发生了一些奇怪的事情,但我不能在图像上这样做)

【讨论】:

以上是关于为啥无法解析 Json 并显示原始结果?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Ajv 在编译期间无法解析引用?

JSON 字符串上的 JSON 解析抛出“无法将对象转换为原始值”

从 Android 上的 URL 简单解析 JSON 并显示在列表视图中

无法解析 json

Node.js 解析 HTML 表并以 JSON 格式获取结果

easyUI 使用datagrid 返回的json 数据正确 为啥页面显示不出来