У меня есть два Json файла. Один файл (jOne) Указывает проверить наличие чего-либо (некоторый ключ и значение) в другом файле JSON (jTwo)
jOne: - который указывает, какие обязательные значения необходимо искать во втором JSON файле
[
{
"IdInOne": "001",
"NameInOne": "Name_2"
},
{
"IdInOne": "002",
"NameInOne": "Name_3"
}
]
jTwo: - Файл, который должен иметь значения, указанные в JOne
[
{
"IdInTwo": "001",
"NameInTwo": "Name_1"
},
{
"IdInTwo": "001",
"NameInTwo": "Name_2"
},
{
"IdInTwo": "001",
"NameInTwo": "Name_3"
},
{
"IdInTwo": "002",
"NameInTwo": "Name_4"
}
]
Так что я пытаюсь сделать, это проверить, если определенная указанная пара ключей и значений json фактически существует в данном отдельном JSON, поэтому в указанном примере в моем первом файле JSON значение IdInOne ":" 001 ", NameInOne": "Name_2" и я хочу проверить, действительно ли у 2-го JSON файла есть ключ и значение, которое ТОЧНО совпадает. Во втором JSON есть несколько совпадений, в которых IdInOne (001) равен IdInTwo, но только одно значение имеет идентификатор и имя, совпадающие с указанным.
Я просто хочу проверить это и распечатать сообщение, если совпадение успешно, и вывести отдельное значение, если совпадение неуспешно
Вот код, который я пробовал, и я нахожу его трудно проверить, существует ли значение на самом деле
class Program
{
static void Main(string[] args)
{
string jOne = @"D:\DelTemp\test.json";
string jTwo = @"D:\DelTemp\test2.json";
string jOneContent = File.ReadAllText(jOne);
string jTwoContent = File.ReadAllText(jTwo);
var InfoInOne = JsonConvert.DeserializeObject<List<One>>(jOneContent);
var InfoInTwo = JsonConvert.DeserializeObject<List<Two>>(jTwoContent);
foreach (var itemInOne in InfoInOne)
{
foreach (var itemInTwo in InfoInTwo.Where(n => n.IdInTwo == itemInOne.IdInOne && n.NameInTwo==itemInOne.NameInOne))
{
if (itemInTwo.exists())
{
//sucess message must be printed
}
else
{
Console.WriteLine("Item not found" + itemInTwo.NameInTwo)
}
}
}
}
}
public class One
{
public string IdInOne { get; set; }
public string NameInOne { get; set; }
}
public class Two
{
public string IdInTwo { get; set; }
public string NameInTwo { get; set; }
}
Примечание: - Недостатком моей текущей реализации является плохая производительность, которую я придерживаюсь, поэтому есть ли лучший способ реализовать это. Также хочу напечатать сообщение об ошибке, в котором говорится, что требуемый / указанный объект не найден после того, как он полностью перебрал и подтвердил, что его нет во втором JSON файле
. Был бы очень признателен за любую помощь по этому вопросу
Редактировать: - Метод Interesct не работает, так как я получаю сообщение об ошибке Two' does not contain a definition for 'exists' and no accessible extension method 'exists' accepting a first argument of type 'Two'