.net 从文件中读取特定键值并添加到列表/字典

n3schb8v  于 2023-05-02  发布在  .NET
关注(0)|答案(1)|浏览(132)

所以,我有数据从我的文件,这是目前从服务器。
这是我文件格式的一部分
[{“Table”:“Starters”,“Label”:“Starters”,“Columns”:[{“Field”:“Desc”,“Display”:“Description”,{“Field”:“Name”,“Display”:“Starter Name”,},{“Table”:“Main”,“Label”:“Main Course”,“Columns”:[{“Field”:“Desc”,“Display:“Description”,{“Field”:“Name”,“Display”:“Main Course Name”,}
我需要阅读它并只提取表和标签。
你能帮忙吗??
下面是一小部分:public void onDestroy(){

var path = HttpContext.Current.Server.MapPath(String.Format("{0}", ConfigurationManager.AppSettings["path"]));

 using(StreamReader file =
     File.OpenText(serverPath)){
  string json = reader.ReadToEnd();
  AddKeyWord(list, json, "Table, Label")

}

}

  private static void 
  AddKeyWord(List<(string, string)> 
  list, string infoString, string 
  keys)
  {
    int lo;
    int hi = 0;
    string[] keyValues = 
    keys.Split(",");

  for(int i = 0; i < 
  keyValues.Length; i++){
    while (hi < infoString.Length)
    {
        lo = 
 infoString.IndexOf(keyValue[i], 
  hi);
        //break condition if end of 
   string
        if (lo == -1) return;
        hi = 
  infoString.IndexOf(",", lo + 
  keyValue[i].Length + 3);

        string value = 
  infoString.Substring(lo, hi-lo);
        
  list.Add((keyValue[i],value));
        
    }
  }
}
jyztefdp

jyztefdp1#

您可以使用JSON序列化器并将其Map到POCO,这在c#(Tutorial JSON Deserialization)中非常容易。
另一种可能性是使用IndexOf(String, StringComparison)Substring(Int32, Int32)的组合。使用IndexOf(String, StringComparison)搜索 tabletag 以获取它们的索引,然后再次使用indexOf()查找分隔符,在本例中为“,”。现在用Substring(Int32, Int32)提取子字符串。
This answered question应该可以解决你的问题。
这个应该能用但我没有广泛地尝试过。

private static void AddKeyWord(List<(string, string)> list, string infoString, string key)
    {
        int lo;
        int hi = 0;
        while (hi < infoString.Length)
        {
            lo = infoString.IndexOf(key, hi);
            //break condition if end of string
            if (lo == -1) return;
            hi = infoString.IndexOf(",", lo + key.Length + 3);

            string value = infoString.Substring(lo, hi-lo);
            list.Add((key,value));
            
        }
    }

相关问题