从JSON数组中查找平均值,最大值和最小值 [英] Find average, maximum and minimum from JSON array

查看:561
本文介绍了从JSON数组中查找平均值,最大值和最小值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的JSON

This my JSON

{
  "samples": [
    {
      "date": "2000-08-10T09:00:00Z",
      "tomato": 10,
      "papaya": 4,
      "pineapple": 4,
      "coconut": 4,
      "apple": 10
    },
    {
      "date": "2014-08-12T09:05:00Z",
      "tomato": 10.5,
      "papaya": 5,
      "coconut": 4,
      "pineapple": 4
    },
    {
      "date": "2000-08-14T09:02:00Z",
      "tomato": 10.8,
      "papaya": 3,
      "pineapple": 4
    },
    {
      "date": "2000-08-16T09:02:00Z",
      "tomato": 11.2,
      "papaya": 6,
      "coconut": 4
    },
    {
      "date": "2000-08-18T08:58:00Z",
      "tomato": 10.9,
      "papaya": 10,
      "coconut": 4,
      "pineapple": 4,
      "apple": 10
    },
    {
      "date": "2000-08-20T09:10:00Z",
      "tomato": 9.3,
      "papaya": 6,
      "pineapple": 4
    },
    {
      "date": "2000-08-22T09:01:00Z",
      "tomato": 9.5,
      "papaya": 10,
      "coconut": 4,
      "pineapple": 4,
      "apple": 10
    }
  ]
}





我试图显示这样的结果





im trying to display the results like this

             parameter   LOW AVG MAX
             tomato        x   y   z
             pineaple      x   y   z
             papaya        x   y   z
             apple         x   y   z
             coconut       x   y   z

This is my results, i know its wrong but i need help on how to display the like indicated above.
             papaya=4   apple=10 pineaple=4  tomato=10    coconut=4
             papaya=5,  apple=0  pineaple=4  tomato=10.5  coconut=4
             papaya=3,  apple=0  pineaple=4  tomato=10.8  coconut=0
             papaya=6,  apple=0  pineaple=0  tomato=11.2  coconut=4
             papaya=10, apple=10 pineaple=4  tomato=10.9  coconut=4
             papaya=6,  apple=0  pineaple=4  tomato=9.3   coconut=0
             papaya=10, apple=10 pineaple=4  tomato=9.5   coconut=4





我尝试过:



private void PrintOverview(byte [] data)< br $>
{

string jsonStr = Encoding.UTF8.GetString(data);





var jObject = JObject.Parse(jsonStr);



var samples = JsonConvert.DeserializeObject< sample []>(jObject [samples]。ToString( ));



var allP arams = samples.Select(s =>新的{s.pH,s.nitrate,s.phosphate,s.temperature,s.chloride});





foreach( all参数in allParams)

{



var allValues = samples.Where(x => x.tomato == parameter.tomato | | x.papaya

== parameter.papaya || x.pineapple == parameter.pineapple ||

x.apple == parameter.apple || x.coconut ==

parameter.coconut)

。选择(s => new {s.papaya,s.apple,s.pineapple,s.tomato,
s.coconut})

.ToList();





Console.WriteLine ({0} {1} {2},参数,allValues.Min(),allValues.Max());

}



}

公共类样本

{

public DateTime d吃了组; }

public double totmato {get;组; }

public int papaya {get;组; }

public int pineapple {get;组; } $ / $
public int coconut {get;组; }

public int apple {get;组; }

}



公共类RootObject

{

public List< sample> ;样本{get;组; }



}



What I have tried:

private void PrintOverview(byte[] data)
{
string jsonStr = Encoding.UTF8.GetString(data);


var jObject = JObject.Parse(jsonStr);

var samples = JsonConvert.DeserializeObject<sample[]>(jObject["samples"].ToString());

var allParams = samples.Select(s => new { s.pH, s.nitrate, s.phosphate, s.temperature, s.chloride });


foreach (var parameter in allParams)
{

var allValues = samples.Where(x => x.tomato== parameter.tomato|| x.papaya
== parameter.papaya || x.pineapple== parameter.pineapple||
x.apple== parameter.apple|| x.coconut ==
parameter.coconut)
.Select(s => new { s.papaya, s.apple, s.pineapple, s.tomato,
s.coconut})
.ToList();


Console.WriteLine("{0} {1} {2}", parameter, allValues.Min(),allValues.Max());
}

}
public class Sample
{
public DateTime date { get; set; }
public double totmato{ get; set; }
public int papaya { get; set; }
public int pineapple { get; set; }
public int coconut { get; set; }
public int apple { get; set; }
}

public class RootObject
{
public List<sample> samples { get; set; }

}

推荐答案

首先,您的示例json结构不正确。

如何测试

- >复制你的json文本

Chrome:

- >点击F12

- >将您的json文本粘贴到控制台中

Firefox:

- >点击F12

- > x =(粘贴你的json文本)



两者都会抛出错误。

您已创建JSON对象为

First thing first, your example json structure is incorrect.
How to test
-> Copy your json text
Chrome:
-> Hit F12
-> paste Your json text into console
Firefox:
-> Hit F12
-> x=(paste your json text)

Both will throw error.
You have created JSON object as
{
  {
   "sample": [
     {...},
     {...}
   ] 
  }
}



{}被视为对象,每个对象必须有名称


{} is considered as object, and each object must have to have name

{
  "Some_Name": {
    "sample":[
      {...},
      {...}
    ]
  }
}



有效。





此外,我认为这个JSON结构设计不佳。

更好的一个是


is valid.


And also, I consider this JSON structure as poorly designed.
A better one would be

[
  {
    "date": "Some Date",
    "fruits": [
      {
        "name":"apple", 
        "price": 10
      }, 
      {
        "name": "orange", 
        "price": 20
      }
    ]
  }
]


这篇关于从JSON数组中查找平均值,最大值和最小值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆