我有以下字符串
[{"id":"select","component":"select","editable":true,"index":2,
"label":"WHAT IS THIS QUESTION?","description":"some description",
"placeholder":"placeholder","options":["Aligator","Pikachi"],"required":false,
"validation":".*","$$hashKey":"object:38"}]
存储在数据库中。
我想检索validation
值。如何使用LINQ实现此目的?我正在使用EF Core 2,但无法继续查询。
var jsonData = from table in myRepository.Table
where table.JSONString.........
JSONString
是存储JSONString的列的名称。
一段时间以来,我一直在SO和Google上搜索帖子,但尚未找到答案。谢谢。
更新:
我为JSON创建了如下的类
public class FormJson
{
[JsonProperty(PropertyName = "id")]
public string id { get; set; }
[JsonProperty(PropertyName = "component")]
public string component { get; set; }
...
}
但是我仍然不知道如何将这个特定的类映射到JSON对象并获取所需的字段。
答案 0 :(得分:1)
下载NuGet软件包Newtonsoft.Json
以包含using Newtonsoft.Json.Linq;
从数据库中获取JSON字符串:
var jsonStr = (from t in myRepository.Table select t.JSONString).FirstOrDefault();
将JSON字符串解析为JObject
:
JObject json = JObject.Parse(jsonStr);
读取要访问的特定令牌的值:
JToken validation = json.GetValue("validation");
执行以下操作:
string value = validation.ToString();
JToken[] valueArray = validation.ToArray();
编辑:
由于JObject.Parse()
在使用JSON时出了点问题(有效),而不是使用JObject.Parse()
,请尝试以下操作:
// Add references for TextReader and JsonReader
using Newtonsoft.Json;
using System.IO;
TextReader tReader = new StringReader(jsonStr);
JsonReader jReader = new JsonTextReader(tReader);
JObject json = JObject.Load(jReader);
JToken validation = json.GetValue("validation");