如何计算json数据项ionic2

时间:2017-01-20 17:55:47

标签: html json typescript ionic-framework ionic2

我发现了一个新问题, 我想计算@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知道这个想法。

  

示例:计算@NAME = 3 (creator,lang,bnb),然后获取value="..." = 0,1,2 (0==creator ,1==lang ,2==bnb)   当我选择lang时,我得到1,我将其用于FACET[1].FACET_VALUES,以便我得到@KEY

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

2 个答案:

答案 0 :(得分:1)

确定。我想向你指出一个提示。用语言你会变得更好。特别是英语,但更多的是解释您当前的结果和您想要的结果。我相信这会迫使你以比你现在更快的速度学习英语。 (来自非母语人士)

&#34;我想计算@ NAME为show @ KEY&#34;

设置数组FACET []

所以,通过返回的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()(如果当前正确设置此日期)

获取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"}
         ]
      }
  ]
}

此代码与您的代码基本相同。你现在提出的问题是,从我的回答中获取代码,如何获得所有员工的所有身份或姓名。 (获取构面对象的所有键名称)

现在让我们用打字稿

告诉你
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

我认为这个伪代码会让你开箱即用,并找到你问题的答案。如果您无法详细说明您想要的输出,我很乐意随时(甚至是周末)帮助您发表评论,我会在有空的时候做出回应!

答案 1 :(得分:0)

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

是的,你完全知道我的意思。 但我希望输出是@KEY

的每FACET[]

示例:

<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);
                        } );

      }
来自离子选择的

显示creatorlangbnb,我想要当我选择lang ion-option value="..."时 保持number

"@NAME"
  • 示例@NAME的计数金额为3和
  • 当我选择creator时,离子选项值=&#34; ...&#34; &LT;&LT;是0
  • 当我选择lang时,离子选项值=&#34; ...&#34; &LT;&LT;是1
  • 当我选择bnb时,离子选项值=&#34; ...&#34; &LT;&LT;是2

如果我得到value,我会将goToapply()设为FACET[]

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

当我选择lang输出

> tha
> eng