Google sheet JSON数据

ezykj2lf  于 2023-07-01  发布在  Go
关注(0)|答案(1)|浏览(140)

我是C#的新手。下面是JSON数据。此外,我得到了它通过转换从谷歌表。我正试图为我的团结游戏做一个排行榜。但是我不能将这些“值”赋给变量。我想得到“Name”,“Score”,“Event”,然后把它们赋给一个变量。

{
  "range": "Sheet1!A1:M112",
  "majorDimension": "ROWS",
  "values": [
    [
      "Time",
      "Name",
      "Surname",
      "E-Mail",
      "Company / University",
      "Event(Optional)",
      "Score"
    ],
    [
      "12.06.2023 11:17:09",
      "Henry",
      "Powell",
      "@hotmail.com",
      "x Company",
      "x Event",
      "0"
    ]
  ]
}

我有这样的结构。此外,我可以打印majorDimension和range。我不理解C#中的列表内列表概念,所以我无法到达“值”部分。你可以看到我在getData部分尝试了什么。

public struct Data{
    public string range;
    public string majorDimension;
    public List<List<string>> values;
}
IEnumerator getData()
    {
        UnityWebRequest www = UnityWebRequest.Get(googleSheetURL);
        yield return www.SendWebRequest();
        if (www.isNetworkError || www.isHttpError)
        {
            Debug.Log(www.error);
        }
        else
        {
            Data data = JsonUtility.FromJson<Data>(www.downloadHandler.text);

            Debug.Log(data.values);
            Debug.Log(data.majorDimension);
            Debug.Log(data.range);
        }

        www.Dispose();
    }

如果你能帮忙我会很高兴的。祝你今天愉快!

rqenqsqc

rqenqsqc1#

你可以使用这个代码作为例子

List<List<string>> values = data.values;

    int NameIndex = values[0].IndexOf("Name");
    int EventIndex = values[0].Select((ev, index) => (ev, index))
                              .First(ev => ev.ev.Contains("Event")).index;
    int ScoreIndex = values[0].IndexOf("Score");

var scores = values.Select((ev, index) => (ev, index)).Where(v => v.index > 0)
                            .Select(e =>  new
                            {
                            name = e.ev[NameIndex],
                            ev = e.ev[EventIndex],
                            score = e.ev[ScoreIndex]
                           }).ToList();

但我强烈建议你下载并安装Unity3D的Newtonsoft.json(谷歌一下)。在本例中,您可以使用以下代码反序列化JSON字符串

using Newtonsoft.Json;

Data data = JsonConvert.DeserializeObject<Data>(www.downloadHandler.text);

但是要使用Newtonsoft,不要忘记添加{get; set;}为Data类的所有属性

相关问题