【问题标题】:Show/Deserialize JSON in string在字符串中显示/反序列化 JSON
【发布时间】:2023-03-21 16:24:01
【问题描述】:

我有下一个 JSON

[[["Hello","Hola",,,1]],,"es"]

我怎样才能只得到第一个对象,在这种情况下是“你好”?

【问题讨论】:

  • 这不是有效的 json。您在同一个数组中有一个字符串和一个整数。类型是否重要,您是否知道首先应该使用的类型?
  • 这是下一个 url 的输出:translate.googleapis.com/translate_a/…
  • 我建议去他们的新api:cloud.google.com/translate/docs/…那个json无效而且看起来很不稳定。
  • @Dispersia:JSON 不要求数组中的项目类型都具有相同的类型。如果 JSON 有任何问题,则说明数组中存在空元素。 JavaScript 初始化符号允许这样做,并在给定索引处创建一个没有条目的数组,但我不确定实际的 JSON 规范是否允许它。如果你做JSON.stringify([[["Hello","Hola",,,1]],,"es"]),你会得到"[[["Hello","Hola",null,null,1]],null,"es"]"

标签: c# json json.net deserialization


【解决方案1】:

例如,使用 JSON.NET,您可以这样做:

var jsonObject = JsonConvert.DeserializeObject<JArray>("[[[\"Hello\",\"Hola\",,,1]],,\"es\"]");
string value = (string)((JValue)jsonObject[0][0][0]).Value;
Console.WriteLine(value);

【讨论】:

  • 好吧,看起来这是有效的 json :) 很好
  • @mybirthname 它仍然无效,但是 jsonconvert 通过这样做创建了一个普通对象数组,所以如果类型发生变化,这可能是不稳定的(数组是不同类型的,所以谁知道还有什么它可能会或可能不会返回)。但我投赞成票仅仅是因为它尽我们所知回答了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2021-09-02
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多