【问题标题】:System.Text.Json access Json object of json object using c# .net core 3.1System.Text.Json使用c#.net core 3.1访问json对象的Json对象
【发布时间】:2021-01-21 06:19:18
【问题描述】:

我正在调用结果以这种方式出现的 api {{'orderNo':123456}}

我试图通过这些代码行访问相同,但它不起作用:

using System.Text.Json.JsonDocument doc = System.Text.Json.JsonDocument.Parse(payment["notes"]);

我觉得应该很容易访问。好吧,我只是不想为此创建任何 DTO。

仅供参考,我可以像这样使用 DTO 类来实现这一点:

RzOrderDto orderNo = System.Text.Json.JsonSerializer.Deserialize<RzOrderDto>(payment["notes"].ToString(),null);

public class RzOrderDto {
        public string orderno { get; set; }
    }

现在,我不想使用任何对象类,只想要 orderNo 的值

【问题讨论】:

  • “它不工作”相当模糊。请告诉我们会发生什么。
  • 如果你说出你想用你的代码实现什么,也许你会有很大帮助。

标签: c# arrays json asp.net-core-3.1 system.text.json


【解决方案1】:

{{'orderNo':123456}} 不是有效的 Json 文档,您应该尝试更改来自 API 的数据。如果不能这样做,则需要在将字符串解析为对象之前去掉外面的大括号。

【讨论】:

  • 好吧,我可以从 API 控制一些事情,如果我输入 'notes': orderno,我会得到这样的结果:{[ "0", "2", "2", “5”、“1”、“8”、“3”、“3”、“7”、“3”]}
  • @Jay:据我所知,这仍然不是有效的 JSON。 JSON“对象”不能直接包含其他对象或数组 - 它只能包含将名称映射到对象/数组/字符串等的属性。您确定这是您返回的 JSON 的 exact 格式吗?如果是这样,我会与 API 提供者交谈...
  • 感谢@JonSkeet 到那时,我能够得到正确的 json JsonElement root = doc.RootElement; root 正在将值打印为 ValueKind = Object : "{ "orderno": "7865752587" }" 但我无法访问属性 orderno 的值
  • @Jay:恐怕我不太理解您的评论 - 如果您可以编辑问题以显示 minimal reproducible example,这将非常有帮助。
  • @Jay:这与minimal reproducible example 相差无几。如果我将该代码复制并粘贴到一个新项目中,它是否允许我编译、运行并查看问题?绝对不。请阅读codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question
猜你喜欢
  • 1970-01-01
  • 2021-01-01
  • 2020-08-02
  • 2021-06-29
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
相关资源
最近更新 更多