GVKun编程网logo

根据属性值过滤 JSON 对象列表,属性值在另一个 JSON 对象列表中(一个属性的值能从其他相关属性计算得到该属性属于)

17

如果您对根据属性值过滤JSON对象列表,属性值在另一个JSON对象列表中和一个属性的值能从其他相关属性计算得到该属性属于感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解根据属性值过滤JSON对象

如果您对根据属性值过滤 JSON 对象列表,属性值在另一个 JSON 对象列表中一个属性的值能从其他相关属性计算得到该属性属于感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解根据属性值过滤 JSON 对象列表,属性值在另一个 JSON 对象列表中的各种细节,并对一个属性的值能从其他相关属性计算得到该属性属于进行深入的分析,此外还有关于C#对象列表,我如何获得一个属性的总和、C#使用Newtonsoft Json根据属性更改列表中项目的属性名称、Flask jsonify对象列表、Java-将对象列表映射到具有其属性属性值的列表的实用技巧。

本文目录一览:

根据属性值过滤 JSON 对象列表,属性值在另一个 JSON 对象列表中(一个属性的值能从其他相关属性计算得到该属性属于)

根据属性值过滤 JSON 对象列表,属性值在另一个 JSON 对象列表中(一个属性的值能从其他相关属性计算得到该属性属于)

如何解决根据属性值过滤 JSON 对象列表,属性值在另一个 JSON 对象列表中?

我尝试了以下代码:

var Mylist={[text:"rate"],[text:"domain"]};

     var newlist= 
     {[displayname:"rate"],[displayname:"forms"],[displayname:"domain"]};
     
     Mylist.forEach(element=> {
     newlist =newlist.filter(p => 
     p.displayname===element.text);
});
```
Whatever is contained in `mylist` should be filtered in `newlist`.

Note: both list are dynamic and keeps changing its property value.

解决方法

这是一个简化的示例,它使用您指定的两个数组,并使用一个 Observable 作为通知机制。每当修改任一数组时,Observable 都会发出更改通知并重新过滤列表。

基本代码是这样的:

  mylist = [{ text: ''rate'' },{ text: ''domain'' }];
  newlist = [
             { displayname: ''rate'' },{ displayname: ''forms'' },{ displayname: ''domain'' }
            ];

  // Define an Observable to post notifications
  private changeSubject = new BehaviorSubject<boolean>(true);
  change$ = this.changeSubject.asObservable();

  filteredList$ = this.change$.pipe(
    map(() =>
      this.newlist.filter(item =>
        this.mylist.some(key => key.text === item.displayname)
      )
    )
  );

  addKey(key: string) {
    this.mylist.push({ text: key });
    // Change notification
    this.changeSubject.next(true);
  }

  addDisplay(name: string) {
    this.newlist.push({ displayname: name });
    // Change notification
    this.changeSubject.next(true);
  }

然后 UI 绑定到 filteredList$ observable,因此只要过滤的数据发生变化,它就会自动更新。

可以在此处找到工作示例应用程序:https://stackblitz.com/edit/angular-filter-lists-as-data-changes-deborahk

如果这不是您所需要的,请随意 fork stackblitz 并根据需要进行更新。

,

let yFilter=this.mylist.map(itemy=>{ return itemy.text; });

this.newlist=this.newlist.filter(itemx=>yFilter.includes(item.Displayname));

C#对象列表,我如何获得一个属性的总和

C#对象列表,我如何获得一个属性的总和

我有一个对象列表。单个对象条目的一个属性是数量。我如何获得金额的总和?

如果我的列表是 double 类型,我可以执行以下操作:

double total = myList.Sum();

但是我想要类似的东西,但是这种语法是不正确的。

double total = myList.amount.Sum();

我应该如何去完成这个?如果可能的话,我很想使用 Sum 函数,而不是循环遍历并计算值。

C#使用Newtonsoft Json根据属性更改列表中项目的属性名称

C#使用Newtonsoft Json根据属性更改列表中项目的属性名称

您可以使用JsonPropertyAttribute更改属性的名称。

这是源代码。

public class B
  {
    [JsonProperty("C")]
    public int Data { get; set; }
  }

  public class A
  { 
    [JsonProperty("List")]   
    public List<B> List { get; set; }
  }

Flask jsonify对象列表

Flask jsonify对象列表

我有一个需要jsonify的对象列表。我看了烧瓶jsonify文档,但我只是不明白。

我班有几个研究所,增值经销商,每一个都是一个字符串:gene_idgene_symbolp_value。我需要怎么做才能将此序列化为JSON?

我的天真代码:

jsonify(eqtls = my_list_of_eqtls)

结果是:

TypeError: <__main__.EqtlByGene object at 0x1073ff790> is not JSON serializable

大概我必须告诉jsonify如何序列化EqtlByGene,但是我找不到一个显示如何序列化类实例的示例。

我一直在尝试遵循下面显示的一些建议来创建自己的JSONEncoder子类。我的代码现在是:

class EqtlByGene(Resource):

    def __init__(self,gene_id,gene_symbol,p_value):
        self.gene_id = gene_id
        self.gene_symbol = gene_symbol
        self.p_value = p_value

class EqtlJSONEncoder(JSONEncoder):
    def default(self,obj):
        if isinstance(obj,EqtlByGene):
            return {
                   'gene_id'     : obj.gene_id,'gene_symbol' : obj.gene_symbol,'p_value'     : obj.p_value
            }
        return super(EqtlJSONEncoder,self).default(obj)

class EqtlByGeneList(Resource):
    def get(self):
        eqtl1 = EqtlByGene(1,'EGFR',0.1)
        eqtl2 = EqtlByGene(2,'PTEN',0.2)
        eqtls = [eqtl1,eqtl2]
        return jsonify(eqtls_by_gene = eqtls)

api.add_resource(EqtlByGeneList,'/eqtl/eqtlsbygene')
app.json_encoder(EqtlJSONEncoder)
if __name__ == '__main__':
    app.run(debug=True)

当我尝试通过卷曲达到它时,我得到:

TypeError(repr(o) + " is not JSON serializable")

Java-将对象列表映射到具有其属性属性值的列表

Java-将对象列表映射到具有其属性属性值的列表

我的ViewValue类定义如下:

class ViewValue {private Long id;private Integer value;private String description;private View view;private Double defaultFeeRate;// getters and setters for all properties}

在我的代码中,我需要将ViewValue实例列表转换为包含来自相应ViewValue的id字段值的列表。

我用foreach循环来做:

List<Long> toIdsList(List<ViewValue> viewValues) {   List<Long> ids = new ArrayList<Long>();   for (ViewValue viewValue : viewValues) {      ids.add(viewValue.getId());   }   return ids;

}

有没有更好的方法来解决这个问题?

答案1

小编典典

编辑:此答案基于以下想法:您需要对代码中其他位置的不同实体和不同属性执行类似的操作。如果您 只需
要按ID将ViewValues列表转换为Longs列表,则请坚持使用原始代码。但是,如果您想要更可重用的解决方案,请继续阅读…

我会为投影声明一个接口,例如

public interface Function<Arg,Result>{    public Result apply(Arg arg);}

然后,您可以编写一个通用转换方法:

public <Source, Result> List<Result> convertAll(List<Source> source,    Function<Source, Result> projection){    ArrayList<Result> results = new ArrayList<Result>();    for (Source element : source)    {         results.add(projection.apply(element));    }    return results;}

然后您可以定义简单的投影,如下所示:

private static final Function<ViewValue, Long> ID_PROJECTION =    new Function<ViewValue, Long>()    {        public Long apply(ViewValue x)        {            return x.getId();        }    };

并像这样应用它:

List<Long> ids = convertAll(values, ID_PROJECTION);

(显然,使用K&R支撑和更长的行会使投影声明更短:)

坦率地说,所有这些对于lambda表达式都会更好,但是没关系…

我们今天的关于根据属性值过滤 JSON 对象列表,属性值在另一个 JSON 对象列表中一个属性的值能从其他相关属性计算得到该属性属于的分享已经告一段落,感谢您的关注,如果您想了解更多关于C#对象列表,我如何获得一个属性的总和、C#使用Newtonsoft Json根据属性更改列表中项目的属性名称、Flask jsonify对象列表、Java-将对象列表映射到具有其属性属性值的列表的相关信息,请在本站查询。

本文标签: