使用带有json字符串列的中继器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用带有json字符串列的中继器相关的知识,希望对你有一定的参考价值。

我有一个SQL Server存储的proc,它返回产品列表。我正在使用中继器在网页中显示数据。这一切都很好,并且返回的行很好。但是,对于每个产品,我都希望获得功能列表,例如:

ProductID, Name, Features 1, T-Shirt, "Blue, Long sleeved, 100% cotton" 2, Jeans, "Blue, Denim, Stonewashed"

理想情况下,我想对我的proc进行一个数据库调用,以一次性返回所有产品及其功能。因此,我认为我需要proc返回三列(ProductID,ProductName,Features),而features列为json数组。

我对asp.net非常陌生,甚至对json还是陌生。我正在使用c#,并且在html页面中,我已经能够很好地使用ProductName和ProductID方面。我希望它看起来像这样(ul标签部分是功能):

<div class="card-description"><%# Eval("ProductName") %><br><br>
  <ul>
    <li>Lightweight textured fabric</li> 
    <li>Rounded v-neckline</li> 
    <li>100% cotton</li>
  </ul><br><br>
  Product code: <strong><%# Eval("ProductID") %></strong>
</div>

然后我的问题是(a)这是执行此操作的最佳方法吗?(b)如何逐行反序列化JSON?

我以错误的方式走这条路吗?

答案

[嗯,我不会将JSON数据推送到数据绑定元素。要实现它可能有很多方案,这取决于您如何管理记录以及如何处理它们。我假设您有两个分别名为ProductsFeatures的表,具有以下架构:Products (Id, Name)Features(Id, FeatureDescription, ProductId)

所以,我只是建议您像这样查询数据:

SELECT Name AS ProductName, STUFF((SELECT ', ' + FeatureDescription FROM Features WHERE Features.ProductId = Products.Id FOR XML PATH('')), 1, 2, '') AS ProductFeatures FROM Products

还有其他方法,但这将是更简单有效的方法。希望这会有所帮助。

以上是关于使用带有json字符串列的中继器的主要内容,如果未能解决你的问题,请参考以下文章

在字符串列 bigquery 中查询 json

仅对带有 Pandas 的字符串列应用转换,忽略数字数据

使用 objection.js 或 knex.js 在 postgres 中的字符串列的 json 数组中查询

将 JSON 字符串从片段传递到适配器的问题

在pandas中提取包含多行和多列的JSON字符串列的部分

计算存储为 Hive 字符串列的 JSON 数组中的对象数