在c#中的JSON数组中搜索文本

本文关键字:搜索 文本 数组 JSON 中的 | 更新日期: 2023-09-27 18:22:31

我正在实现简单的搜索引擎。所有数据都保存为文本文件中的JSON。我的实现场景是,如果我搜索像"rock"这样的单词,方法应该以包含"rock"值的标签Id列表的形式返回结果。我一直在寻找样本代码,但在每个样本中,它们都按track_id这样的标签进行搜索,"但我需要按值进行搜索。这是我的示例JSON数组。。

在此处输入图像描述

测试词:岩石预期结果:991335991336991337

在c#中的JSON数组中搜索文本

我建议使用JSON库,如JSON.net。

如果您可以允许读取整个文件,那么使用linq非常容易。

class TrackElement {
    public Track Track {get;set;}
}
class Track {
    public string track_id{get;set;}
    public string track_name{get;set;}
    public string track_category{get;set;}
}

读取文件、反序列化和搜索:

var data = File.ReadAlltext("path/to/your/file.txt");
List<TrackElement> database = JsonConvert.DeserializeObject<List<TrackElement>>(data);
var results = database.Where(i=>i.Track.track_category.ToLower().Contains("rock")).Select(t=>t.Track.track_id);

如果数据库非常大,则不应该将所有内容读取到内存中,在这种情况下,可以使用流式解析(逐个令牌),直接读取文件。为此,您可以使用Json.net库中的JsonReader类。(http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_JsonReader.htm)