Можно ли добавить массив в полезную нагрузку json?
Например, допустим, это моя полезная нагрузка:
string json = @"{
'channel': {
'title': 'Star Wars',
'link': 'http://www.starwars.com',
'description': 'Star Wars blog.',
'obsolete': [{'something':'awesome'},{'a':'b'}],
'item': [],
'nested':[{'upgrademe':'please'}, {'upgrademe':'no'}]
}
}";
Результат, который я хотел бы, будет примерно таким:
string json = @"{
'channel': {
'title': 'Star Wars',
'link': 'http://www.starwars.com',
'description': 'Star Wars blog.',
'obsolete': [{'something':'awesome'},{'a':'b'}],
'item': [],
'nested':[{'upgrademe':'please', 'emptyArray':[]}, {'upgrademe':'no'}]
}
}";
Для каждого channel.nested
, где upgrademe
== please
, я хотел бы добавить пустой массив, например []
.
до:
'nested':[{'upgrademe':'please'}, {'upgrademe':'no'}]
после:
'nested':[{'upgrademe':'please', 'emptyArray':[]}, {'upgrademe':'no'}]
Моя текущая реализация:
public static JObject AddArray(this JObject jObject, string path, string key, string value)
{
var obs = jObject.SelectToken(path);
if (obs == null)
{
return jObject;
}
foreach (var jsonObject in obs)
{
if (jsonObject.SelectToken(key).ToString().ToLower() != value.ToLower())
{
continue;
}
jObject.SelectToken(path).Parent.AddAfterSelf(new JValue(new JProperty("emptyArray", new JArray())));
}
return jObject;
}
Я получаю исключение в этой строке:
пример использования:
var result = jobject.AddArray("channel.nested", "upgrademe", "please");
выше сказано следующее:
find the object "channel.nested" and when upgrademe==please, add a sibbling node as an empty array
Как условно добавить объект массива в полезную нагрузку json?
Попробуйте без JValue, например. AddAfterSelf(new JProperty("emptyArray", new JArray()))
@AmanB вот оно что! пожалуйста, сделайте это ответом
Рад, что это помогло.
Поскольку вы добавляете новое свойство в объект. Вам не нужно использовать JValue
Просто используйте JProperty
напрямую:
AddAfterSelf(new JProperty("emptyArray", new JArray()))
не понимая актуальности вашего комментария @AlexM