我有一个我无法解决的问题。我有一个nodejs服务器,可以通过REST API发送一个简单的json。
var filename = 'latestVersion.json';
fs.readFile(filename, 'utf8', function (err, data) {
if (err) throw err;
filejson = JSON.parse(data.toString('utf8').replace(/^\uFEFF/, ''));
res.json(data);
});
然后我在我的C#应用程序中检索json:
class AppVersion
{
public int major { get; set; }
public int minor { get; set; }
public int build { get; set; }
}
HttpWebRequest http = (HttpWebRequest)HttpWebRequest.Create(new Uri(url));
HttpWebResponse response = (HttpWebResponse)http.GetResponse();
string versionString = null;
using(System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream()))
{
versionString = sr.ReadToEnd();
}
if(versionString != null)
{
AppVersion test = new AppVersion() { major = 1, minor = 1, build = 1 };
string testStr = JsonConvert.SerializeObject(test);
var j = JsonConvert.DeserializeObject<AppVersion>(versionString);
}
然后在反序列化时出现异常“无法转换或转换....”。但是,如果我使用testStr
一切顺利。然后我看着琴弦,发现了这个:
testStr = "{\"major\":1,\"minor\":1,\"build\":1}"
versionString = "\"{\\\"major\\\": 1, \\\"minor\\\": 1, \\\"build\\\": 1}\""
更奇怪的是,我尝试手动编辑versionString
删除额外的转义字符,但仍然出现错误(JSON可视化工具表示格式错误)。
解决这个问题的任何线索?