【问题标题】:Cosmos DB Sql Api - Query C# escaped inner jsonCosmos DB Sql Api - 查询 C# 转义的内部 json
【发布时间】:2018-05-09 20:43:50
【问题描述】:

我遇到了一种情况,数据正在输入,但其中一个属性是 JSON 对象,但它被转义了:

   {
    "Evaporator_Temperature": 68,
    "Gateway_Info": "{\"temp_sensor\":0.00,\"temp_pcb\":77.00}"
    }

我可以查询 Evaporator_Temperature 但我无法获取 temp_pcb,我假设是因为它被转义了。我无法更改传入的数据,因为它来自 IoT 设备。

我试过了:

我尝试了几个不同的角度:

SELECT a.temp_pcb FROM c
join a in c.Gateway_Info

SELECT c.Gateway_Info.temp_pcb FROM c

SELECT c.Gateway_Info["\"temp_pcb\""] FROM c

SELECT c.Gateway_Info["temp_pcb"] FROM c

我可以做些什么来获取 temp_pcb?

谢谢!

【问题讨论】:

  • 你能检查一下它是否以转义字符串开头吗?
  • 不幸的是
  • 您可以控制它的保存方式吗?我知道您说它来自物联网设备,但您无权访问它吗?
  • 很遗憾没有
  • 流程:设备 -> IotHub -> 流分析 -> CosmosDB

标签: azure-cosmosdb


【解决方案1】:

所以这在聊天中已解决,但这里是解决方案。

在函数中使用 JSON.parse(input.Gateway_Info) 会将字符串转换为 JSON 对象,并让您查询它。

【讨论】:

  • 我非常希望在将数据保存到 CosmosDB 之前运行到 json 函数的转换,否则数据无法被索引并且查询可能需要对许多查询进行全面扫描。
  • 我不知道你是否可以访问聊天,但是我建议将数据替换为对象 json 而不是序列化字符串,然后将其更改为像这样开始插入。跨度>
  • 好的,它在提示的聊天中,但从这个答案中丢失了。您可以从聊天中提取重要部分以使答案自成一体。
猜你喜欢
  • 2018-12-17
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
  • 2018-07-13
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 2020-06-06
相关资源
最近更新 更多