繁体   English   中英

如何计算json数据项ionic2

[英]How to count json data item ionic2

我发现了一个新问题,我想算一下@NAME来设置数组@NAME FACET[]以显示@KEY

Myjson

  "    RESULT":{
              "FACET":[
                { "@NAME" : "creator", 
                  "@COUNT" : "20",
                  "FACET_VALUES":[
                    {
                      "@KEY":"Book Company1",
                      "@VALUE":"13"},
                    {
                      "@KEY":"Book Company1์",
                      "@VALUE":"10"}],
                { "@NAME" : "lang", 
                  "@COUNT" : "70",
                  "FACET_VALUES":[
                    {
                      "@KEY":"tha",
                      "@VALUE":"33"},
                    {
                      "@KEY":"eng",
                      "@VALUE":"42"}
                   ],
                { "@NAME" : "bnb", 
                  "@COUNT" : "64",
                  "FACET_VALUES":[
                    {
                         .
                         .
                         .

              ] 

.

     optionsFn(): void {
            this.http.get("my_url")
                        .subscribe(data =>{
                                 this.date=data.json().RESULT.FACET; //get @NAME
                        },error=>{
err => console.error(err),
                           () => console.log('getRepos completed')
            );
        console.log(this.date);

            console.log(this.date);
            this.goToapply()
      }

      goToapply(){

       this.http.get("my_url")
                        .subscribe(data =>{
                                 this.foundRepos=data.json().RESULT.FACET[0,1,2,3.4......].FACET_VALUES; ///get @KEY
                        },error=>{
                            console.log(error);
                        } );

      }

..

    <ion-label>Filterr</ion-label>
          <ion-select [(ngModel)]="refine" (ionChange)="optionsFn();">
            <ion-option value="..." *ngFor="let item of date">{{item["@NAME"]}},({{item["@COUNT"]}})</ion-option>
          </ion-select>
<ion-list>          
          <ion-item *ngFor="let item of foundRepos" (click)="itemClicked($event,item)">
            <h3> {{ item[@KEY"] }}</h3>
          </ion-item>
        </ion-list>

这个value="..."我想把它保留为string以供使用,但zi知道这个想法。

示例:count @NAME = 3 (creator,lang,bnb) ,并获得value="..." = 0,1,2 (0==creator ,1==lang ,2==bnb)当我选择lang我得到1 ,我用它来FACET[1].FACET_VALUES ,所以我得到@KEY

抱歉写错了。 我的英语不是很好。

好的。 我只想向您指出一个提示。 你应该会用词好一点。 不是特别是英语,而是更多关于解释您当前的结果和您想要的结果。 我相信这会迫使你以比目前更快的速度学习英语。 (来自非母语人士)

“我想计数@NAME 来设置数组 FACET[] 以显示 @KEY”

因此,使用返回的 JSON,我们可以做一些事情,但从立即查看您的问题时并不能很清楚(做了一个 +1,因为我不认为它的质量很差或不是一个好问题)。

所以我应该在我的帖子中介绍 3 件事

  • 计算NAME出现的数量
  • 为 FACET 设置数组
  • 显示每个 FACET 的 KEY,这似乎是最终目标。

好的

计算NAME出现的数量

所以你基本上已经得到了这个答案。 您提交了此代码

this.http.get("my_url") .subscribe(data =>{ this.date=data.json().RESULT.FACET; //get @NAME });

这意味着您已经可以访问 FACET 数组。 计数该NAME发生可以或者通过for循环创建和检查,如果名称没有未定义的(因而递增一个int)上NAME总是被定义的事实或计数,从而只调用完成的量this.date.size() (当然,如果 this.date 设置正确)

获取 FACET 的数组

这个,你已经通过分配this.date = data.json().RESULT.FACET 您的this.date现在包含一个保存 FACET 对象的数组。 就像这样看:JSON(带有在 JSON 中不可能的注释,但仅用于演示目的)=

{ FACET: // declare the main object, called FACET 
  [     // declaring the FACET as an Array ([] is for creating a list)
    {id: 2} //initializing a child of the FACET array
    ,{id: 3} //initializing the second FACET child.
  ]
} 

所以,这个伪(不现实的)JSON 包含 2 个对象, id = 2id = 3

好的,现在你应该对 JSON 有点了解了,让我们来看看你的代码是什么样子的(考虑到一个有多个办公室和每个办公室多个员工的 Businnes)

{
  OFFICES" : [
       {
         "id" : "1",
         "location" : "New York",
         "employees" : [
           {"id" : "1", "fullName" : "Jon Skeet"},
           {"id" : "2", "fullName" : "Random Stranger"}
         ]
     },
     {
        "id" : "2",
        "location" : "Amsterdam",
        "employees" : [
            {"id" : "1", "fullName" : "Ivaro18"},
            {"id" : "2", "fullName" : "Some-Random Stranger"}
         ]
      }
  ]
}

此代码与您的代码基本相同。 你现在问的问题是,从我的答案中获取代码,如何获取所有员工的所有 ID 或姓名。 (获取 facet 对象的键的所有名称)

现在让我们用打字稿告诉你

someFunction() {
   this.http.get('someUrl').map(response => {
      console.log(JSON.stringify(response.json())); // check what you actually retrieve

      let decoded = response.json();
      for(let office of decoded.OFFICE) {
         console.log(office.location);

         for(let employee of office.employees) {
            console.log(employee.fullName);
         } 
      }
   });
}

该程序的预期输出

> New York
> Jon Skeet
> Random Stranger
> Amsterdam
> Ivaro18
> Some-Random Stranger

我认为这个伪代码会让你思考一些开箱即用的问题并找到你问题的答案。 如果您不能详细说明您想要的输出内容,我很乐意随时(甚至是周末)为您提供帮助,只需发表评论,我会在有时间的时候回复您!

@Ivaro18 感谢您的回答。 我想计算@NAME@NAME设置数组并显示每个FACET[]的 KEY 的数量,这似乎是最终目标。

是的,你完全明白我的意思。 但我希望输出是该FACET[]每个@KEY

例子 :

<ion-select [(ngModel)]="refine" (ionChange)="optionsFn();">
            <ion-option value="..." *ngFor="let item of date">{{item["@NAME"]}},({{item["@COUNT"]}})</ion-option>
          </ion-select>
<ion-list>          
          <ion-item *ngFor="let item of foundRepos" (click)="itemClicked($event,item)">
            <h3> {{ item[@KEY"] }}</h3>
          </ion-item>
        </ion-list>

.

 optionsFn(): void {
            this.http.get("my_url")
                        .subscribe(data =>{
                                 this.date=data.json().RESULT.FACET; //get @NAME
                        },error=>{
err => console.error(err),
                           () => console.log('getRepos completed')
            );
        console.log(this.date);

            console.log(this.date);
            this.goToapply()
      }

      goToapply(){

       this.http.get("my_url")
                        .subscribe(data =>{
                                 this.foundRepos=data.json().RESULT.FACET[0,1,2,3.4......].FACET_VALUES; ///get @KEY
                        },error=>{
                            console.log(error);
                        } );

      }

从上面 ion-select 是 show creatorlangbnb ,我想如果当我选择lang ion-option value="..."来保留"@NAME" number

  • @NAME示例计数量为 3 和
  • 当我选择creator是 ion-option value="..." << is 0
  • 当我选择lang is ion-option value="..." << is 1
  • 当我选择bnb是 ion-option value="..." << is 2

如果我得到了value ,我会把它带到goToapply()来设置goToapply() FACET[]

  • 例如我选择bnb我得到值 =2 和console.log this.refine是显示2
  • 把它(2) let p = this.refine ,这样p = 2
  • 将 p 带到this.foundRepos=data.json().RESULT.FACET[p].FACET_VALUES; 用于在ion-list显示@KEY

当我选择lang输出时

> tha
> eng

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM