如何忽略 JSON 解析返回数据中的某些对象?
How to ignore some objects in JSON parsed back data?
对于如下示例 JSON 数据的实例,我想保留包含内容和视频 属性 的对象,而忽略不包含它们的对象。像 2nd、3rd 这样只有地址和错误 属性 的对象应该被忽略。
//JSON数据示例
[
{
"content": "asdhh",
"url": "dasddd",
"country": "kkjkkj",
"address": "aksjdkasjd"
},
{
"address": "aabbccdd"
},
{
"error": "error description"
}
]
我尝试使用if video.content != nil && video.url != nil
来控制ForEach 循环中VideoListRow 的显示。但事实证明,我无法在 ForEach 闭包中调用 video.property 。那么我怎么能忽略不需要的解析后数据并只显示想要的对象,在这种情况下只需要第一个对象。
var body: some View {
List {
ForEach(self.model.videos) { video in
if video.content != nil && video.url != nil {
VStack(spacing: 0) {
VideoListRow(video: url)
}
}
}
}.onAppear() {
self.model.getVideoBundle()
}
}
// 更改我的代码以添加过滤器:
较小的修改是使用 ||
而不是 &&
。因为我想保留对象,它只有一个内容和 url,那个是有效的。只有不包含其中两个,才忽略它。
ForEach(
self.model.videos.filter { (video) -> Bool in
video.content != nil || video.url != nil
}
) { video in
VStack(spacing: 0) {
VideoListRow(video: url)
}
}
先过滤数据!
ForEach(
self.model.videos.filter { (video) -> Bool in
video.content != nil && video.url != nil
}
) { video in
VStack(spacing: 0) {
VideoListRow(video: url)
}
}
对于如下示例 JSON 数据的实例,我想保留包含内容和视频 属性 的对象,而忽略不包含它们的对象。像 2nd、3rd 这样只有地址和错误 属性 的对象应该被忽略。
//JSON数据示例
[
{
"content": "asdhh",
"url": "dasddd",
"country": "kkjkkj",
"address": "aksjdkasjd"
},
{
"address": "aabbccdd"
},
{
"error": "error description"
}
]
我尝试使用if video.content != nil && video.url != nil
来控制ForEach 循环中VideoListRow 的显示。但事实证明,我无法在 ForEach 闭包中调用 video.property 。那么我怎么能忽略不需要的解析后数据并只显示想要的对象,在这种情况下只需要第一个对象。
var body: some View {
List {
ForEach(self.model.videos) { video in
if video.content != nil && video.url != nil {
VStack(spacing: 0) {
VideoListRow(video: url)
}
}
}
}.onAppear() {
self.model.getVideoBundle()
}
}
// 更改我的代码以添加过滤器:
较小的修改是使用 ||
而不是 &&
。因为我想保留对象,它只有一个内容和 url,那个是有效的。只有不包含其中两个,才忽略它。
ForEach(
self.model.videos.filter { (video) -> Bool in
video.content != nil || video.url != nil
}
) { video in
VStack(spacing: 0) {
VideoListRow(video: url)
}
}
先过滤数据!
ForEach(
self.model.videos.filter { (video) -> Bool in
video.content != nil && video.url != nil
}
) { video in
VStack(spacing: 0) {
VideoListRow(video: url)
}
}