解析JSON结果 - C#

时间:2011-05-02 16:32:03

标签: c# json json.net

提前感谢您的任何帮助!

好的,所以我正在尝试从API解析Json结果,而我绝不是Json专家,但是数据的返回结果对我来说似乎有点难以理解(它似乎返回了一个'header'然后是项目...查看原始结果示例)。我一直在尝试使用Json.NET http://james.newtonking.com/projects/json/help/来解析它(这看起来像一个非常好的工具,还不够熟悉它,或Json就此而言)。

我正在寻找的可能是有经验的人使用这个特定的dll或建议更好/更容易的工具? (我正在尝试解析结果,以便理想地映射到一个类)。

-Thanks

原始返回结果(Json)

{
"code": 0,
"message": "Successful",
"partials": {
    "_key": "partial",
    "0": {
        "datetime": "2011-03-08 16:22:51",
        "customer_id": "373263",
        "domain": "xyz.com ** deleted 2011-04-08 18:26:55 UTC**",
        "name": "Joe Customer",
        "phone": "1234567894",
        "email": "joecustomer@test.com",
        "offer": "",
        "pub_id": "",
        "sub_id": "",
        "data1": "",
        "data2": "",
        "data3": "",
        "custom1": "",
        "custom2": "",
        "custom3": "",
        "custom4": "",
        "custom5": "",
        "custom6": "",
        "custom7": "",
        "custom8": "" 
    },
    "1": {
        "datetime": "2011-03-08 16:43:11",
        "customer_id": "373296",
        "domain": "abc.com ** deleted 2011-04-08 18:26:55 UTC**",
        "name": "Jane Customer",
        "phone": "1234567891",
        "email": "janecustomer@test.com",
        "offer": "",
        "pub_id": "",
        "sub_id": "",
        "data1": "",
        "data2": "",
        "data3": "",
        "custom1": "",
        "custom2": "",
        "custom3": "",
        "custom4": "",
        "custom5": "",
        "custom6": "",
        "custom7": "",
        "custom8": "" 
    }
} 

}

我的尝试

        HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse();

        if (request.HaveResponse == true)
        {
            Stream responseStream = webResponse.GetResponseStream();
            StreamReader responseReader = new System.IO.StreamReader(responseStream, Encoding.UTF8);
            string responseString = responseReader.ReadToEnd();

            JObject o = JObject.Parse(responseString);

            IList<JToken> results = o["partials"].Children().ToList();

            IList<bbParial> oResults = new List<bbPartial>();

            foreach (JToken t in results)
            {
                if (t.ToString().Contains("partial"))
                {
                    // Do nothing this is the header
                }
                else
                {
                    bbPartial bbp = JsonConvert.DeserializeObject<bbPartial>(t.ToString());
                }
            }
        }

样本类

public class bbpartial
{
    public string _key;
    public string datetime;
    public string customer_id;
    public string domain;
    public string name;
    public string phone;
    public string email;
    public string offer;
    public string pub_id;
    public string sub_id;
    public string data1;
    public string data2;
    public string data3;
    public string custom1;
    public string custom2;
    public string custom3;
    public string custom4;
    public string custom5;
    public string custom6;
    public string custom7;
    public string custom8;
}

1 个答案:

答案 0 :(得分:1)

JObject jsonObj = JObject.Parse(jasonExample);

Customer customerOne = new Customer()
 {
   Name =(string)jsonObj.selectToken("partials[0].name")
 }

这有用吗?有用吗?