gpt4 book ai didi

asp.net-mvc - 将 IQueryable 泛型转换为 JSON

转载 作者:行者123 更新时间:2023-12-03 23:42:47 27 4
gpt4 key购买 nike

我正在通过以下方式生成投影:

var query = from book in books
select new
{
label = book.Title,
value = book.ID
};

在我的 Razor 页面中,我需要使用:
    var booksArray = [{
@(json)
}];

这样得到的数组看起来像:
label: 'c++',
value: 'c++'
}, {
label: 'java',
value: 'java'
}, {
label: 'php',
value: 'php'
}, {
label: 'coldfusion',
value: 'coldfusion'
}

我已经非常接近几种不同的方法 - 我可以得到一个在服务器端看起来正确的字符串,但是当呈现到页面本身时,所有 '标记变成 ' .

但是专注于通过 JSON.net 实现这一目标......

最可能的方法似乎应该是:
var json = JsonConvert.ToString(query);

但这会抛出:
Unsupported type: System.Linq.Enumerable+WhereSelectListIterator`2[Project.Entity.Book,<>f__AnonymousType3`2[System.String,System.Int32]]. Use the JsonSerializer class to get the object's JSON representation.

什么是正确的 JSON.net 语法?

谢谢

最佳答案

您需要.ToArray()的组合和 Html.Raw()
ToArray()评估查询并制作 JsonConvert快乐的

var query = from book in books
select new
{
label = book.Title,
value = book.ID
};

var json = JsonConvert.SerializeObject(query.ToArray());

注意:您需要使用 JsonConvert.SerializeObject如果要序列化复杂类型。 JsonConvert.ToString用于转换简单类型,如 bool、guid、int、uri 等。

在您看来 Html.Raw不对 JSON 进行 html 编码:
var booksArray = @(Html.Raw(json))

关于asp.net-mvc - 将 IQueryable 泛型转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12130681/

27 4 0