如何在C#中解析我的Json响应字符串

时间:2016-08-26 05:45:26

标签: c# json

这是我得到的JSON回复,我无法解析,请帮帮我。

{
"features": [{
    "attributes": {
        "OBJECTID": 1,
        "schcd": "29030300431",
        "schnm": "UNAIDED GENITALIA LIPS DALMATIA RS"

    },
    "geometry": {
        "x": 8449476.63052563,
        "y": 1845072.4204768054
    }
}]
}

3 个答案:

答案 0 :(得分:0)

这是一个可以帮助您入门的答案Deserialize JSON with C#

我更喜欢NewtonSoft的解决方案:Newtonsoft JSON Deserialize

您可以使用他们的JsonConverter来简单地序列化/反序列化对象

这是一个简单的例子: 首先需要与JSON结构匹配的类:

<?php

$str="01;Tommy;32;Coder&&02;Annie;20;Seller";

$array=explode("&&",$str);

foreach($array as $key=>$val){ 
    $array[$key]=explode(";",$val);
}
print_r($array);

然后你就像这样使用JsonConverter(JSON.Net):

public class MyCoolClass
{
   public IEnumerable<Feature> features {get; set;}
}

public class Feature 
{
   public Attributes Attributes {get; set;}
   public Geometry Geometry {get; set;} 
}

public class Attributes 
{
   public int ObjectId {get; set;}
   public string Schcd {get; set;}
   public string Schnm {get; set;}
}

public class Geometry
{
   public double X {get; set;}
   public double Y {get; set;}
}

答案 1 :(得分:0)

要解析JSON,您很可能需要像JSON.Net这样的外部库或类似的东西。

然后,您需要创建一个包含与JSON String匹配的属性的类(包装器),并将该字符串反序列化为该对象。

当您创建要将JSON字符串反序列化的包装类时,请注意以与JSON字符串中命名相同的方式命名属性。

示例:

public class MyObject {
  public List <Feature> Features {get;set;} 
}

public class Feature {
  public MyAttributes Attributes {get;set; }
  public Geometries Geometries {get;set; }
}

public class MyAttributes {
  public int ObjectID {get;set;}
  public string Schcd {get;set;}
  public string Schnm {get;set;}
}

public class Geometries {
  public double X {get;set;}
  public double Y {get;set;}
}

然后只需调用JSON库的反序列化函数:

var myObject = JsonConvert.DeserializeObject<MyObject>(jsonString);

要访问像对象ID这样的属性,您只需调用:

myObject.Features[0].Attributes.ObjectId;

答案 2 :(得分:0)

如果您使用dynamic即可,您可以这样做

var json = "{ \"features\" : [ { \"attributes\": { \"OBJECTID\": 1, \"schcd\": \"29030300431\", \"schnm\": \"UNAIDED GENITALIA LIPS DALMATIA RS\" }, \"geometry\":  { \"x\": 8449476.63052563, \"y\": 1845072.4204768054 } } ]  }";

dynamic obj = JsonConvert.DeserializeObject(json);
var objectId = obj.features[0].attributes.OBJECTID;

它使用Newtonsoft.Json,可以与here中的Nuget一起安装。

Install-Package Newtonsoft.Json

请注意,这不会进行任何空检查,只是假设它是features中您想要的第一个对象。但它很简单,并且不需要您创建任何模型。

如果您想使用更完整的模型,我会选择Bojan Bj0ey_wh提供的答案。