JSON串数组如何取值?用的C#。。

{\"datetime\":\"2019/9/2 13:46:00\",\"measparam\":\"w01018\",\"value\":411.839996337891,\"unit\":\"mg/L\",\"type\":1,\"dataflag\":\"N\"},{\"datetime\":\"2019/9/2 13:46:00\",\"measparam\":\"w21011\",\"value\":3.07800006866455,\"unit\":\"mg/L\",\"type\":1,\"dataflag\":\"N\"}

有这样一个json串数组如何判断当measparam为w01018时候,value取值为411.839996;当measparam为w21011时候,value取值为3.07800006866455?

先把json转成实体,这里帮你把实体类写好了

public class Rootobject
{
    public Root[] Root { get; set; }
}

public class Root
{
    public string datetime { get; set; }
    public string measparam { get; set; }
    public string value { get; set; }
    public string unit { get; set; }
    public string type { get; set; }
    public string dataflag { get; set; }
}

之后你需要写一个json反序列化函数,这个需要引用System.Web.Extensions

public static T BeginJsonDeserialize<T>(string str)
{
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    return serializer.Deserialize<T>(str);
}

然后把你的json语句反序列化成对象

var json = BeginJsonDeserialize<Rootobject>("[{\"datetime\":\"2019/9/2 13:46:00\",\"measparam\":\"w01018\",\"value\":411.839996337891,\"unit\":\"mg/L\",\"type\":1,\"dataflag\":\"N\"},{\"datetime\":\"2019/9/2 13:46:00\",\"measparam\":\"w21011\",\"value\":3.07800006866455,\"unit\":\"mg/L\",\"type\":1,\"dataflag\":\"N\"}]");

然后你就可以对这个实体做任何判断了,用linq会比较方便
例如

var m1 = json.Root.ToList().Find(p => p.measparam == "w01018");
var m2 = json.Root.ToList().Find(p => p.measparam == "w21011");
if(m1==null || m1.value!= "411.839996")
    MessageBox.Show("w01018判断失败");
if (m2 == null || m2.value != "3.07800006866455")
    MessageBox.Show("w21011判断失败");

全部代码截图
图片说明

有用望采纳

从json文本看,这是一串json对象数组吧,先将这json字符串反序列化为对象,即有:object1 和 object2
反序列化可以为:
(1)自定义对象,自己创建对应类,与json匹配;
(2)也可以用IDcitionary去代替,此时key为json的property名称,object value为json对应属性的名称;
剩下的,就是简单的C#范畴的知识了,不用多赘述了吧

将json转成JSONObject对象,
JSONArray array = JSONObject.parseArray(jsonString);
jsonObject.getString("measparam");
用该对象获取值就好了

希望对你有用