为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法知道在C#中迭代和分析JSON字符串时哪个是最后一个令牌?

有没有办法知道在C#中迭代和分析JSON字符串时哪个是最后一个令牌?

C#
拉莫斯之舞 2022-08-20 17:10:58
我正在解析字符串上的一些JSON数据,以将其传递到具有自定义格式的文件。但是我需要知道哪个是文件的最后一个标记,以便我用“}”而不是“}”关闭标记(这将是,没有逗号才能获得正确的语法)。我试图使用该属性获取最后一个令牌,但它并不像我想象的那样工作。Last这是我用来解析数据并写入文件的函数(它还将所需的数据输出到终端,但不是在JSON数据中,这就是为什么我首先解析它):private static void ParseData()        {            JObject jsonData;            try            {                using (StreamWriter file = new StreamWriter(Globals.dataFile))                {                    file.WriteLine("{");                    jsonData = JObject.Parse(Globals.json);                    Console.WriteLine("*********************************************");                    foreach (JToken tokens in jsonData["indicator"]["values"])                    {                        Console.WriteLine("Fecha y hora: " + tokens["datetime"] + " Valor: " + tokens["value"] + Environment.NewLine + "*********************************************");                        file.Write(Environment.NewLine + "\t{" + Environment.NewLine + "\t\t\"datetime\": " + tokens["datetime"] + ",");                        file.WriteLine("\t\t\"value\": " + tokens["value"]);                        if (tokens != tokens.Last)                        {                            file.WriteLine("\t},");                            Console.WriteLine("\t},");                        }                        else                        {                            Console.WriteLine("\t}");                        }                    }                    file.WriteLine("}");                }            }            catch (Exception ex)            {                PrintExceptionMessage(ex);            }        }
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

您需要将所选键/值对从json解析为类对象列表,然后再次将其保存到新文件中,例如


private static void ParseData()

{

    string json = File.ReadAllText(@"Path to your input json file");


    JObject jsonData = JObject.Parse(json);


    List<MyCustomClass> output = new List<MyCustomClass>();


    foreach (JToken tokens in jsonData["indicator"]["values"])

    {

        output.Add(new MyCustomClass { datetime = tokens["datetime"].ToString(), value = tokens["value"].ToString() });

    }


    File.WriteAllText(@"Path to your output json file", JToken.FromObject(output).ToString());

}

你需要一个类对象来解析你的键/值对,


class MyCustomClass

{

    public string datetime { get; set; }

    public string value { get; set; }

}

输出:


[

  {

    "datetime": "31-01-2019 05:30:00 AM",

    "value": "49.38"

  },

  {

    "datetime": "31-01-2019 06:30:00 AM",

    "value": "47.46"

  },

  {

    "datetime": "31-01-2019 07:30:00 AM",

    "value": "46.82"

  },

  {

    "datetime": "31-01-2019 08:30:00 AM",

    "value": "46.5"

  },

  {

    "datetime": "31-01-2019 09:30:00 AM",

    "value": "47.36"

  },

  {

    "datetime": "31-01-2019 10:30:00 AM",

    "value": "50.05"

  },

  {

    "datetime": "31-01-2019 11:30:00 AM",

    "value": "56.61"

  },

  {

    "datetime": "31-01-2019 12:30:00 PM",

    "value": "65.58"

  },

  {

    "datetime": "31-01-2019 01:30:00 PM",

    "value": "66.59"

  },

  {

    "datetime": "31-01-2019 02:30:00 PM",

    "value": "66.49"

  },

  {

    "datetime": "31-01-2019 03:30:00 PM",

    "value": "65.54"

  },

  {

    "datetime": "31-01-2019 04:30:00 PM",

    "value": "63.71"

  },

  {

    "datetime": "31-01-2019 05:30:00 PM",

    "value": "61.94"

  },

  {

    "datetime": "31-01-2019 06:30:00 PM",

    "value": "56.58"

  },

  {

    "datetime": "31-01-2019 07:30:00 PM",

    "value": "56.08"

  }

]


查看完整回答
反对 回复 2022-08-20
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信