我有一个网络项目使用角和C#。
在C#控制器中,我希望读取用于测试的本地json文件的内容。
这是我从工作目录中读取JSON的代码。
string path = HttpContext.Current.Server.MapPath("~/testing/testData.json");
JObject jsonData = JObject.Parse(path);
string jsonString = jsonData.ToString();
List<orResult> result = JsonConvert.DeserializeObject<List<orResult>>(jsonString);
return result;这里可以看到JSON。杰森
当我运行这个应用程序时,我会得到以下错误。
“Newtonsoft.Json.JsonReaderException”类型的异常发生在Newtonsoft.Json.dll中,但未在用户代码中处理 附加信息:解析值时遇到的意外字符: M. Path '',第0行,位置0。
当我悬停查看路径变量时,它指向正确的位置。如果我将路径变量复制并粘贴到浏览器中,就会看到JSON。错误是分析数据或者什么的..。我没有头绪。需要帮助!
我看过Stack上的其他解决方案,但没有一个解决了我的问题。
发布于 2015-09-02 20:13:59
JObject.Parse()需要实际的JSON内容(字符串),而不是路径。
JSON实际上是一个数组,因此可以使用JArray.Parse()。另外,将JSON字符串转换为JObject,然后返回ToString()实际上并没有在这里添加任何“值”。
这样就行了。
string json = File.ReadAllText(HttpContext.Current.Server.MapPath("~/testing/testData.json"));
var result = JsonConvert.DeserializeObject<List<orResult>>(json);发布于 2015-09-02 20:16:25
您正在尝试反序列化MapPath返回的已翻译的路径 ("c:\whatever...\testing\testData.json"),即不是文件的内容。
试着做这样的事情:
JObject jsonData = JObject.Parse(File.ReadAllText(path));..。但同样,不需要使用Parse(),因为您不需要JObject。只需直接反序列化到一个List<orResult>:
var result = JsonConvert.DeserializeObject<List<orResult>>(File.ReadAllText(path));https://stackoverflow.com/questions/32362006
复制相似问题