Newtonsoft异常引发,“输入字符串'08'不是有效数字”

时间:2019-04-06 17:58:04

标签: c# firebase

我正在尝试制作从网络(http://scriptopia.co.uk/Post.php?id=8)复制的基本c#代码,以使自己熟悉Firebase。通过将时间数据发送到数据库(第8秒除外),该代码似乎可以正常工作。有人可以告诉我为什么这种奇怪的行为吗?

        while (true)
        {
            DateTime date = DateTime.Now;
            string hour = date.ToString("HH");
            string minutes = date.ToString("mm");
            string seconds = date.ToString("ss");

            string jsondata = "{'Time':{'Hour':  " + hour + ",'Minute':  " + minutes + ", 'Second':  " + seconds + ", }}";
            JObject data = JObject.Parse(jsondata);
            string json = JsonConvert.SerializeObject(data);


            var request = System.Net.WebRequest.CreateHttp("https://******.firebaseio.com/.json?auth=***db**secret***");
            request.Method = "PATCH";
            request.ContentType = "json";
            var buffer = Encoding.UTF8.GetBytes(json);
            request.ContentLength = buffer.Length;
            request.GetRequestStream().Write(buffer, 0, buffer.Length);
            var response = request.GetResponse();
            json = (new System.IO.StreamReader(response.GetResponseStream())).ReadToEnd();
        }

我希望能够连续接收时间数据而不会出现任何错误,但是在这种情况下,代码每分钟崩溃8秒。我尝试在在线编译器中运行它,并观察到相同的结果。

2 个答案:

答案 0 :(得分:2)

当您获得秒数时,请仅用“ s”对其进行格式化,以使其不使用前导零:string seconds = date.ToString("s");,并对小时和分钟进行相同操作。

答案 1 :(得分:-2)

如果json值像这样=>

UIDefaults.getUI() failed: no ComponentUI class for: javax.swing.JRootPane[,0,0,0x0,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=1,maximumSize=,minimumSize=,preferredSize=]

这意味着“数据”的类型为字符串。

将其更改为

{
    "Data" : "Value"
}

那么它将是int值。