【问题标题】:Parse Google Transliteration Json using c#使用 c# 解析 Google 音译 Json
【发布时间】:2020-03-23 17:20:44
【问题描述】:

我正在尝试从 Google 音译 Json 中获取价值。 Json 代码如下所示:

[
  "SUCCESS",
  [
    [
      "hlo",
      [
        "jaisa",
        "jaisaa",
        "jaissa",
        "jaisaaa",
        "zaisa",
        "jaissaa"
      ],
      [],
      {
        "candidate_type": [
          0,
          0,
          0,
          0,
          0,
          0
        ]
      }
    ],
    [
      "ok",
      [
        "main",
        "mainn",
        "man",
        "mein",
        "mann",
        "meinn"
      ],
      [],
      {
        "candidate_type": [
          0,
          0,
          0,
          0,
          0,
          0
        ]
      }
    ]

  ]
]

我的 C# 代码从 json 中获取值:

var userObj = JObject.Parse(jsontxt.Text.Trim());
wordstxt.Text = userObj[1][0][0].ToString();

没有从 json 代码中提取值的变量名,我收到如下错误:

从 JsonReader 读取 JObject 时出错。当前的 JsonReader 项目不是 一个对象:StartArray。路径'',第 1 行,位置 1。

谁能帮我解决这个问题。我正在努力获得价值hlo > jaisa

【问题讨论】:

  • 使用 JArray.Parse 而不是 JObject.Parse,因为您获得的 JSON 文档代表一个数组,而不是一个对象。
  • @JonSkeet 谢谢。 “var userObj = JArray.Parse(jsontxt.Text.Trim()); wordstxt.Text = userObj[1][0][0].ToString();”这是有效的并返回 hlo。但我想获得 hlo 的第一个值
  • 所以使用userObj[1][0][1],这是另一个数组。基本上,您需要非常仔细地查看 JSON 的结构,并从中找出您需要什么。使用调试器调查userObj 可能会对您有所帮助。

标签: c# asp.net json.net


【解决方案1】:

正如评论部分中提到的@JonSkeet。您可以将此 Json 解析为 JArray,然后使用 userObj[1][0][1]; 获取预期列表。

static void Main(string[] args)
{
    var jsonString = @"[
                  ""SUCCESS"",
                  [
                    [
                      ""hlo"",
                      [
                        ""jaisa"",
                        ""jaisaa"",
                        ""jaissa"",
                        ""jaisaaa"",
                        ""zaisa"",
                        ""jaissaa""
                      ],
                      [],
                      {
                        ""candidate_type"": [
                          0,
                          0,
                          0,
                          0,
                          0,
                          0
                        ]
                      }
                    ],
                    [
                      ""ok"",
                      [
                        ""main"",
                        ""mainn"",
                        ""man"",
                        ""mein"",
                        ""mann"",
                        ""meinn""
                      ],
                      [],
                      {
                        ""candidate_type"": [
                          0,
                          0,
                          0,
                          0,
                          0,
                          0
                        ]
                      }
                    ]

                  ]
                ]";


    var userObj = JArray.Parse(jsonString);

    var expectedListValues = userObj[1][0][1];

    foreach (JToken item in expectedListValues)
    {
        Console.WriteLine(item.ToString());
    }

    Console.ReadLine();
}

输出将是:

jaisa
jaisaa
jaissa
jaisaaa
zaisa
jaissaa

如果您只想获取其中的第一项,也可以使用userObj[1][0][1][0].ToString()

【讨论】:

    猜你喜欢
    • 2012-08-05
    • 1970-01-01
    • 2011-10-26
    • 2018-09-12
    • 2011-01-03
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多