C#从JsonReader读取JObject时出错。路径'',第0行,位置0

时间:2019-07-02 10:53:58

标签: c# json stream streamreader jsonreader

我正在尝试使用以下代码解析json。我收到错误消息:

  

从JsonReader读取JObject时出错。路径”,第0行,位置0。

我认为这可能是因为我的JSON格式不正确,所以我已经输出了它,而且看起来还可以:

{ 
    "serviceDeskId": "4", 
    "requestTypeId": "223", 
    "requestFieldValues": { 
        "summary": "test" 
    } 
} 

但是现在我完全被卡住了。谁能看到我要去哪里错了?这真让我抓狂!!

在此行上触发了错误:

var jsonresponse = JObject.Parse(response);

完整的代码段:

req.ContentType = "application/json";

                var json = JObject.Parse(
                        "{\"serviceDeskId\": \"4\",\"requestTypeId\": \"223\",\"requestFieldValues\": {\"summary\": \"" +
                        summary.Value + "\"}}");

                jsonCheck = json.ToString();

                using (var streamWriter = new StreamWriter(req.GetRequestStream()))
                    {

                        streamWriter.Write(json);
                    }

                    HttpWebResponse resp = req.GetResponse() as HttpWebResponse;


                    // Obtain a 'Stream' object associated with the response object.
                    Stream ReceiveStream = resp.GetResponseStream();

                    Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

                    String response = "";

                    // Pipe the stream to a higher level stream reader with the required encoding format. 
                    StreamReader readStream = new StreamReader(ReceiveStream, encode);

                    response = readStream.ReadToEnd();

                    // Release the resources of stream object.
                    readStream.Close();

                    // Release the resources of response object.
                    resp.Close();

                    var jsonresponse = JObject.Parse(response);

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

我只在输入完全为空字符串时看到此错误。检查您的文本是否符合该变量。

using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
                    
public class Program
{
    public static void Main()
    {
        var json = JObject.Parse("");
        Console.WriteLine(json);
        
    }
}

https://dotnetfiddle.net/u0FMLS

答案 1 :(得分:0)

啊,我相信我以前有这个问题。我发现Visual Studio以不同的方式保存json文件。您可以通过以下方式进行检查:

  1. 在Visual Studio中,转到“文件”->“打开”,然后指向指向您的json文件
  2. 然后单击“打开”按钮附近的小箭头,然后选择“打开方式”。
  3. 打开“打开方式”对话框后,选择“二进制编辑器”,然后单击“确定”

[注意:使用其他十六进制编辑器可以完成之前的步骤。]

打开文件后,以其十六进制格式,查看文件是否以...{.. 开头或以..}..结尾,并删除起始点“ ..”和结束点“ ..”,以及保存文件,然后重试。

如果在Visual Studio中创建一个json文件,则会发生这种情况。

或者,您可以使用其他程序(例如Notepad ++)创建一个新文件并使用该文件。

希望这会有所帮助。