我正在使用.net Web API来获取json并将其返回给前端以获取角度。json可以是对象或数组。我的代码当前仅适用于数组,而不适用于对象。我需要找到一种方法来尝试解析或确定内容是否是对象或数组。
这是我的代码
public HttpResponseMessage Get(string id) { string singleFilePath = String.Format("{0}/../Data/phones/{1}.json", AssemblyDirectory, id); List<Phone> phones = new List<Phone>(); Phone phone = new Phone(); JsonSerializer serailizer = new JsonSerializer(); using (StreamReader json = File.OpenText(singleFilePath)) { using (JsonTextReader reader = new JsonTextReader(json)) { //if array do this phones = serailizer.Deserialize<List<Phone>>(reader); //if object do this phone = serailizer.Deserialize<Phone>(reader); } } HttpResponseMessage response = Request.CreateResponse<List<Phone>>(HttpStatusCode.OK, phones); return response; }
以上可能不是最好的方法。它就是我现在所在的位置。
使用Json.NET,您可以这样做:
string content = File.ReadAllText(path); var token = JToken.Parse(content); if (token is JArray) { IEnumerable<Phone> phones = token.ToObject<List<Phone>>(); } else if (token is JObject) { Phone phone = token.ToObject<Phone>(); }