c# - 如何将空数组添加到 json 有效负载?
问题描述
是否可以将数组添加到 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
where 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");
以上内容如下:
找到对象“channel.nested”,当 upgrademe==please 时,添加一个兄弟节点作为一个空数组
我们如何有条件地将数组对象添加到 json 有效负载中?
解决方案
由于您正在将新属性添加到对象中。你不需要使用JValue
直接使用JProperty
即可:
AddAfterSelf(new JProperty("emptyArray", new JArray()))
推荐阅读
- python - Lepton 相机:使用 Python 控制快门模式
- powerbi - 委派 Web 应用权限以使用 Power BI API
- html - 如何使用样式和换行符解析 dart 中的 HTML 内容?
- python - Django:STATIC_ROOT STATIC_ROOT 无法加入 BASE_DIR 路径
- python - 为什么我的第一个 epoch 花费大部分时间来训练预训练的 VGG16 模型
- flutter - 参数类型'List
功能(列表 ?, 列表 ?)' 不能分配给 'List 功能(列表 , 列表 )' - node.js - Twilio用nodejs发送短信不发送消息
- javascript - 相对于自身大小的偏移 svg 路径元素
- apache-spark - Pyspark 窗口函数,具有对旅行者数量进行取整的条件
- javascript - 如何使用 Javascript Apache 删除 excel 文件表单服务器