Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# JSON文件未更新-正在获取;无法对空引用执行运行时绑定;错误_C#_Json - Fatal编程技术网

C# JSON文件未更新-正在获取;无法对空引用执行运行时绑定;错误

C# JSON文件未更新-正在获取;无法对空引用执行运行时绑定;错误,c#,json,C#,Json,使用C#,我试图更改JSON文件中的值,但是这些值没有更改。 下面是JSON-我打算更改 { "client": { "name": "ClientName", "pageTitle": "PageTitle", "serverId": 234 }, "connection": { "router": { "webSocketURL": "wss://pbnasdadasdasd",

使用C#,我试图更改JSON文件中的值,但是这些值没有更改。 下面是JSON-我打算更改

{
    "client": {
        "name": "ClientName",
        "pageTitle": "PageTitle",
        "serverId": 234
     },
    "connection": {
        "router": {
            "webSocketURL": "wss://pbnasdadasdasd",
            "signalRUrl": "https://pbncrasdasdasdasd",
            "endPoint": "https://pbncasdasdadasd",
            "type": "BabelFish",
            "protocol": "WebClientGameplayProtocol.WebClientGameplayProtocolDefinition",
            "transport": [
                "webSockets"
            ]
        }

    }
}
这就是我的C#代码在方法中的样子

string json = File.ReadAllText(Jsonfile);
            dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(json);
            jsonObj["client"]["serverId"] = "7001";

            jsonObj["client"]["connection"]["router"]["webSocketURL"] = "wss://xrouter.program.eu";
            jsonObj["client"]["connection"]["router"]["signalRUrl"] = "https://xrouter.program.eu/h";
            jsonObj["client"]["connection"]["router"]["endPoint"] = "https://xrouter.program.eu/";
当我运行我的代码时,我得到一个“不能对空引用执行运行时绑定”错误,并且不确定为什么在该区域中已经有值。****我不再得到这个错误-我在jsonObj中的路径不正确****

请参见下面的错误:


提前感谢。

此错误是由于
jsonObj[“客户端”][“连接”]…
造成的,其中
[“客户端”]
对于
连接属性不存在。请尝试使用
JObject.Parse

string json = File.ReadAllText(Jsonfile);
var jsonObj = JObject.Parse(json);
jsonObj["client"]["serverId"] = "7001";

jsonObj["connection"]["router"]["webSocketURL"] = "wss://xrouter.program.eu";
jsonObj["connection"]["router"]["signalRUrl"] = "https://xrouter.program.eu/h";
jsonObj["connection"]["router"]["endPoint"] = "https://xrouter.program.eu/";

Console.WriteLine(jsonObj.ToString());
输出

{
  "client": {
    "name": "ClientName",
    "pageTitle": "PageTitle",
    "serverId": "7001"
  },
  "connection": {
    "router": {
      "webSocketURL": "wss://xrouter.program.eu",
      "signalRUrl": "https://xrouter.program.eu/h",
      "endPoint": "https://xrouter.program.eu/",
      "type": "BabelFish",
      "protocol": "WebClientGameplayProtocol.WebClientGameplayProtocolDefinition",
      "transport": [
        "webSockets"
      ]
    }
  }
}

根据json层次结构,要更新websocket url,需要使用下面的代码行更新属性值

jsonObj["connection"]["router"]["webSocketURL"] = "wss://xrouter.program.eu";

“下面是XML”->而不是JSON?看来这些属性在您的JSON文件中已经完成了(如果您确实提供了JSON而不是截图,那么这对我们的测试非常有帮助)。此外,在您的屏幕截图中,您在应用程序运行时编辑了该行代码,并且需要重新生成才能反映您的更改。@John很抱歉造成混淆,我已编辑了此帖子。出于安全目的,我在运行时编辑了URL以获取屏幕截图。请您将其作为一个完整的文件发布,好吗?目前它已被删除好的,就像你有两个不同的文件,不清楚完整JSON文件中的所有内容。请包括所有内容,包括根对象。确定-因此我看到了错误的地方-现在已经修复,我的根不正确。但是,我仍然没有得到更改的值。确定吗@John@John更新了Json