【问题标题】:how can i fixed invalid json and Deserialize in list<> using json.net如何使用 json.net 修复列表中的无效 json 和反序列化
【发布时间】:2016-09-20 16:40:52
【问题描述】:

当我尝试部署 json 时出现错误:

Newtonsoft.Json.JsonReaderException: Additional text encountered after finished reading JSON content: [. Path '', line 1, position 37.

当我在 google 中进行大量搜索时,我发现 json 无效,因为它有 multiple roots json是:

{"slotId":"1","slotName":"9:00 am"}{"slotId":"3","slotName":"9:15 am"}{"slotId":"4","slotName":"9:15 am"}{"slotId":"6","slotName":"9:30 am"}{"slotId":"7","slotName":"9:30 am"}{"slotId":"8","slotName":"9:45 am"}{"slotId":"9","slotName":"9:45 am"}{"slotId":"10","slotName":"10:00 am"}{"slotId":"11","slotName":"10:15 am"}{"slotId":"12","slotName":"10:30 am"}

我正在尝试反序列化列表:

                mSlotType = JsonConvert.DeserializeObject<List<SlotType>>(json);
            mAdapter = new SlotTimeAdapter(this, Resource.Layout.MrngTimeSlot_ListView_Rowlayout, mSlotType);

json类是:

 class SlotType
{
    public string slotId { get; set; }
    public string slotName { get; set; } 

    public class RootObject
    {
        public List<SlotType> slottype { get; set; }
    }
}

请帮帮我

开发json的php代码是:

$Details = array();
    $detail = array("slotId" => $row['slotId'],
                        "slotName" => $row['slotName'],
                            );
        array_push($Details, $detail);

    echo json_encode($Details );  

当我尝试在https://jsonformatter.curiousconcept.com/ 上检查我的 json 时,它给了我一个输出:

`[{
  "slotId":"1",
  "slotName":"9:00 am"}][{
  "slotId":"3",
  "slotName":"9:15 am"}][{
  "slotId":"4",
  "slotName":"9:15 am"}][{
  "slotId":"6",
  "slotName":"9:30 am"}][{
  "slotId":"7",
  "slotName":"9:30 am"}][{
  "slotId":"8",
  "slotName":"9:45 am"}][{
  "slotId":"9",
  "slotName":"9:45 am"}][{
  "slotId":"10",
  "slotName":"10:00 am"}][{
  "slotId":"11",
  "slotName":"10:15 am"}][{
  "slotId":"12",
  "slotName":"10:30 am"}]`

请帮助我,因为我无法理解问题出在哪里

【问题讨论】:

  • 尝试用 [] 包装你的原始 json 并用 , 分隔每个 {} 项
  • json 不正确。当我在jsonformatter.curiousconcept.com 上检查它时,它给了我这个错误列表:
  • 错误:错误:多个 JSON 根元素[代码 22,结构 12] 错误:多个 JSON 根元素[代码 22,结构 23] 错误:多个 JSON 根元素[代码 22,结构 34] 错误:多个 JSON 根元素[代码 22,结构 45] 错误:多个 JSON 根元素[代码 22,结构 56] 错误:多个 JSON 根元素[代码 22,结构 67] 错误:多个 JSON 根元素[代码 22,结构 78 ] 错误:多个 JSON 根元素[代码 22,结构 89] 错误:多个 JSON 根元素[代码 22,结构 100]

标签: c# json.net


【解决方案1】:

这里的问题是你的 JSON 格式错误它应该看起来像这样:

{
    slottype: [{"slotId":"1","slotName":"9:00 am"},
    {"slotId":"3","slotName":"9:15 am"},
    {"slotId":"4","slotName":"9:15 am"},
    {"slotId":"6","slotName":"9:30 am"},
    {"slotId":"7","slotName":"9:30 am"},
    {"slotId":"8","slotName":"9:45 am"},
    {"slotId":"9","slotName":"9:45 am"},
    {"slotId":"10","slotName":"10:00 am"},
    {"slotId":"11","slotName":"10:15 am"},
    {"slotId":"12","slotName":"10:30 am"}]
}
  • 方括号表示列表类型
  • 列表元素之间需要逗号
  • 您将需要根元素结构来更好地匹配您的根对象

【讨论】:

  • 我需要在我的代码中进行哪些更改才能获取此 json。
  • 比较,多出一对花括号和方括号,使其成为 List 和有效的 Json 对象
  • 呵呵这里的json有效
  • 对不起,我听不懂。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多