我想消费我的web api,它从我的asp.net mvc web应用程序返回JSON格式。由于我的JSON格式有根节点(我填充oledb数据集的方式)。我一直在收到以下错误。消费asp.net web.api json不工作
无法反序列化当前JSON对象(例如{ “名称”: “值”}) 成型 'System.Collections.Generic.List'1 [FileAttributes]' 因为 类型需要JSON阵列(例如[1,2,3])来正确地反序列化 。要解决这个错误,可以将JSON更改为JSON数组(例如[1,2,3]),或者更改反序列化类型,使其成为正常的 .NET类型(例如,不是像integer这样的基本类型,也不是集合 类型像一个数组或
List<T>
),可以从JSON 对象反序列化。 JsonObjectAttribute也可以添加到类型中,以强制它从一个JSON对象反序列化。路径“SearchData”,第1行,位置 14.
下面是代码样品
string Baseurl = "http://localhost:62602/";
client.BaseAddress = new Uri(Baseurl);
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage Res = await client.GetAsync("api/FileSearch/?searchTerm=" + searchTerm);
if (Res.IsSuccessStatusCode)
{
var fsResponse = Res.Content.ReadAsStringAsync().Result;
List<FileAttributes> fileAttribultes = JsonConvert.DeserializeObject<List<FileAttributes>>(fsResponse);
}
然后以下一些想法,我用JSON.Parse
和SelectToken
以除去根节点,但此时List<FileAttributes>
返回数据,但在空值
JToken jtok = JObject.Parse(fsResponse).SelectToken("SearchData");
List<FileAttributes> fileAttribultes = JsonConvert.DeserializeObject<List<FileAttributes>>(fsResponse);
这里是我FileAttributes类
public class FileAttributes
{
public string Name { get; set; }
public string Header { get; set; }
public string Title { get; set; }
}
我很感激,如果有人检查什么是错误的JSON部分与根节点的反序列化和什么是正确的方法来做到这一点?
基于对象模型需要被更新以匹配JSON从邮差输出
{ "SearchData": [ { "SYSTEM.NAME": "FILE NAME 1" , "SYSTEM.HEADER": "HEADER 1", "SYSTEM.TITLE": "TITLE 1", }, { "SYSTEM.NAME": "FILE NAME 1" , "SYSTEM.HEADER": "HEADER 1", "SYSTEM.TITLE": "TITLE 1", }, { "SYSTEM.NAME": "FILE NAME 1" , "SYSTEM.HEADER": "HEADER 1", "SYSTEM.TITLE": "TITLE 1", }] }
什么是JSON是什么样子?错误信息实际上告诉你你需要做什么来解决问题。 – Nkosi
糟糕对不起,忘了提及JSON示例。 [ { “SYSTEM.NAME” :: “FILE NAME 1”, “SYSTEM.HEADER”: “HEADER 1”, “SYSTEM.TITLE”:从邮差输出 '{ “SearchData” 复制“TITLE 1" , }, \t \t { “SYSTEM.NAME”: “FILE NAME 1”, “SYSTEM.HEADER”: “HEADER 1”, “SYSTEM.TITLE”: “标题1”, }, \t \t { “SYSTEM.NAME”:“FILE NAME 1”, “SYSTEM.HEADER “:”HEADER 1“, ”SYSTEM“。TITLE“:”TITLE 1“, }] }' – user2178604