【问题标题】:Received json array response from API without brackets收到来自 API 的不带括号的 json 数组响应
【发布时间】:2019-06-11 01:56:54
【问题描述】:

我认为我得到的是来自 Rest API 的 json 响应,但所有数组字段都不包含 []。当我解析时,它给了我错误。

我尝试过 JObject.Parse 或 JsonConvert.DeserializeObject,它们都给我错误。当我添加 [] 时,它就像一个魅力。

var content= "{'main': {'item': 'item1', 'value': 'value1'}, {'item': 'item2', 'value': 'value2'} }";

当我尝试时:

jRoot = JObject.Parse(content);

我收到了

{"无效的属性标识符字符:{.Path 'main', line 1, position 47."}

当我尝试时:

var = JsonConvert.DeserializeObject<mainOBJ>(content);

我收到了

{"解析值时遇到意外字符:}。路径'main',第1行,位置7。"}

【问题讨论】:

  • 您正在尝试使用 JSON 解析器解析无效的 JSON(但相似)。除了 hacky 解决方案,最好的建议是联系 API 维护人员并让他们修复它。
  • jsonlint.com 对那个“JSON”有什么看法?
  • 那不是 JSON。没有 JSON 序列化程序会创建此字符串。也没有解析器能够解析它。看起来 REST API 作者试图手动创建 JSON 字符串而不是使用 JSON 序列化程序
  • 你也不能假设 main 是一个数组。如果忘记的部分是第二个字典之前的main2: 标签怎么办?可能main 是一个项目数组,或者main 是根字典中的两个属性之一。
  • 请将我的答案设置为这个问题的答案

标签: c# .net json api


【解决方案1】:

你正确的json格式一定是这样的:

var content= "{'main': [{'item': 'item1', 'value': 'value1'}, {'item': 'item2', 'value': 'value2'} ]}";

【讨论】:

    猜你喜欢
    • 2021-01-08
    • 2016-08-06
    • 1970-01-01
    • 2019-08-08
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多