На будущее если кому ни будь будет интересно вот как я решил, помог решить
Zedx

// Получаем данные
Tab Tab1 = instance.ActiveTab;
IZennoTable tblTest = project.Tables["БукмекерскиеКоэфиценты"];
int intRowsCount = tblTest.RowCount;
string JSON_Koeff = project.Variables["JSON_Koeff"].Value;
// Парсим JSON
var obj = JObject.Parse(JSON_Koeff);
for(int i = 0; i < intRowsCount; i++)
{
// Получаем ключ из таблицы и преобразуем в строку
string dynamicKey = tblTest.GetCell(0, i).ToString();
project.SendInfoToLog("dynamicKey=" + dynamicKey);
// Проверяем существование пути в JSON перед обращением
JToken oddsToken = obj["odds"];
if (oddsToken == null)
{
project.SendInfoToLog("Не найден объект 'odds' в JSON");
continue;
}
JToken dynamicKeyToken = oddsToken[dynamicKey];
if (dynamicKeyToken == null)
{
project.SendInfoToLog($"Ключ '{dynamicKey}' не найден в объекте 'odds'");
continue;
}
JToken choicesToken = dynamicKeyToken["choices"];
if (choicesToken == null || !choicesToken.HasValues)
{
project.SendInfoToLog($"Не найден массив 'choices' для ключа '{dynamicKey}'");
continue;
}
// Проверяем, существует ли второй элемент в массиве choices
if (choicesToken[0] == null)
{
project.SendInfoToLog($"Второй элемент не найден в массиве 'choices' для ключа '{dynamicKey}'");
continue;
}
JToken fractionalValueToken_P1 = choicesToken[0]["fractionalValue"];
if (fractionalValueToken_P1 == null)
{
project.SendInfoToLog($"Не найдено значение 'fractionalValueToken_P1' для ключа '{dynamicKey}'");
continue;
}
// Безопасно извлекаем значение
string strP1 = fractionalValueToken_P1.ToString();
double Cislitel=Convert.ToDouble(Regex.Match(strP1,@"(.*(?=/))").Value);
double Znamenatel=Convert.ToDouble(Regex.Match(strP1,@"((?<=/).*)").Value);
double P1=Cislitel/Znamenatel+1;
project.SendInfoToLog($"Значение для ключа {dynamicKey}: {strP1}");
JToken fractionalValueToken_X = choicesToken[1]["fractionalValue"];
string strX = fractionalValueToken_X.ToString();
Cislitel=Convert.ToDouble(Regex.Match(strX,@"(.*(?=/))").Value);
Znamenatel=Convert.ToDouble(Regex.Match(strX,@"((?<=/).*)").Value);
double X=Cislitel/Znamenatel+1;
JToken fractionalValueToken_P2 = choicesToken[2]["fractionalValue"];
string strP2 = fractionalValueToken_P2.ToString();
Cislitel=Convert.ToDouble(Regex.Match(strP2,@"(.*(?=/))").Value);
Znamenatel=Convert.ToDouble(Regex.Match(strP2,@"((?<=/).*)").Value);
double P2=Cislitel/Znamenatel+1;
tblTest.SetCell(1,i,Convert.ToString(P1));
tblTest.SetCell(2,i,Convert.ToString(X));
tblTest.SetCell(3,i,Convert.ToString(P2));
/
}