Newtonsoft JToken 的列表框显示值
Posted
技术标签:
【中文标题】Newtonsoft JToken 的列表框显示值【英文标题】:Listbox DisplayValue for Newtonsoft JToken 【发布时间】:2021-12-26 23:25:23 【问题描述】:我有一个列表(来自 Newtonsoft),我正在尝试为 Microsoft .NET 列表框定义一个 DisplayValue。
List<JToken> gCollectionRequests = new List<JToken>();
//Code here to create a valid gCollectionRequests
listBox1.DataSource = gCollectionRequests;
listBox1.DisplayMember = gCollectionRequests[0]["name"].Value<string>();
列表基于 JSON Postman 集合文件,其第一个字段是“名称”。这就是我想要展示的。上面这行代码并没有破坏代码,只是没有任何作用。
gCollectionRequests 的一个例子:
从 List 源定义 DisplayValue 的正确方法是什么?
【问题讨论】:
您能否更新您的帖子以包含一个包含您的 json 的简单示例,以便我们进一步帮助您? @zaggler 示例已添加。 如果可能,请添加代码,而不仅仅是图片。 要使DisplayMember
工作,您需要提供一个属性名称。但是,JToken 显然没有属性name
。您需要自己的类型和所需的属性来绑定它。
【参考方案1】:
谢谢,@SriramSakthivel。那是关键。所以我创建了一个包含我的 JSON 集合的新对象。你会这样做吗?
public class CombinedJTokens
private int RequestCount; //Not really needed.
public JToken MyRequest;
public CombinedJTokens(int myCount, JToken myToken)
this.RequestCount = myCount;
this.MyRequest = myToken;
public string DisplayName
get return string.Format("This is a JToken: 0", MyRequest["name"].Value<string>());
然后,这处理填充列表框:
private void FillInListBoxWithRequests()
List<CombinedJTokens> myCombinedTokensList = new List<CombinedJTokens>();
int theCount = 0;
foreach (var item in gCollectionRequests)
JToken myNewJToken = item;
CombinedJTokens myCombinedJTokens = new CombinedJTokens(++theCount, item);
myCombinedTokensList.Add(myCombinedJTokens);
listBox1.DataSource = null;
listBox1.DataSource = myCombinedTokensList;
listBox1.DisplayMember = "DisplayName";
gCollectionRequests 是 JSON 请求的列表,定义为:
List<JToken> gCollectionRequests = new List<JToken>();
【讨论】:
以上是关于Newtonsoft JToken 的列表框显示值的主要内容,如果未能解决你的问题,请参考以下文章
JsonResult(object) 导致“不支持集合类型'Newtonsoft.Json.Linq.JToken'。”
无法将类型“newtonsoft.json.linq.jtoken”隐式转换为 newt“newtonsoft.json.linq.jvalue”
从 JSON 检索项目时获取“无法将 Newtonsoft.Json.Linq.JObject 转换为 Newtonsoft.Json.Linq.JToken”
C# Newtonsoft.Json解析json字符串处理 - JToken 用法
LINQ to Entities 无法识别方法 'Newtonsoft.Json.Linq.JToken get_Item(System.String)' 方法,
没有服务参考的项目。错误:类型“Newtonsoft.Json.Linq.JToken”是一个不受支持的递归收集数据协定。