【问题标题】:Newtonsoft Serialize the List of ObjectsNewtonsoft 序列化对象列表
【发布时间】:2019-03-21 19:36:11
【问题描述】:

有没有办法在没有任何[ ] 的情况下生成List <object> 的序列化字符串

我们正在使用以下代码进行序列化

JsonConvert.SerializeObject(data)

[
  {
    "SessionId": "6d1ea52b-9f0c-4c32-835d-49e6db22efee",
    "ComponentName": "WebRole",
    "Message": "X"
  },
  {
    "SessionId": "6d1ea52b-9f0c-4c32-835d-49e6db22efee",
    "ComponentName": "WebRole",
    "Message": "Y"
  },
  {
    "SessionId": "6d1ea52b-9f0c-4c32-835d-49e6db22efee",
    "ComponentName": "WebRole",
    "Message": "Z"
  },
  {
    "SessionId": "6d1ea52b-9f0c-4c32-835d-49e6db22efee",
    "ComponentName": "WebRole",
    "Message": "XY"
  },
  {
    "SessionId": "6d1ea52b-9f0c-4c32-835d-49e6db22efee",
    "ComponentName": "WebRole",
    "Message": "XYZ",
    "Payload": "X>>1"
  }
]

有没有办法删除上面的 [] ,我有解决方法可以在序列化字符串上调用 Trim('[')Trim(']')。是否有任何从 NewtonSoft 开箱即用的设置删除 [],我也不想使用匿名对象。

【问题讨论】:

  • SessionId 属性后的 1、2、3、4 数字是拼写错误还是存在于您的数据中?
  • 如果删除方括号[],那么生成的 JSON 将无效。您可以在此处复制并粘贴您的输出 json 检查json2csharp.com
  • 我们不会在 C# 中使用反序列化函数。相反,我们将使用一些工具来摄取数据,以插入 SQL/Data Store 等。
  • 你会使用Substring like => var newStr = jsonStr.Substring(1, jsonStr.Length - 1);
  • 如果你告诉newtonsoft 从 json 中删除方括号,那么它会回复你 我被编程为只生成有效的 JSON,那么我怎样才能给你无效的 JSON? 所以我的建议是使用TrimSubstring 进行字符串操作

标签: c# json.net


【解决方案1】:

不,没有办法,如果data 是一个集合,那么 JsonConvert 将返回一个 JSON 数组。您可以按照您的说明使用 Trim('[').Trim(']') 修改输出字符串,但您的 JSON 无效。

【讨论】:

  • 您应该将建议添加为评论
  • @Sunil 问题是“有没有办法删除上面的......?”我的答案是否定的,我编辑我的答案更具体。
猜你喜欢
  • 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
相关资源
最近更新 更多