从json字符串中检索值 [英] Retrieve the values from json string

查看:93
本文介绍了从json字符串中检索值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 json 字符串.我想从json字符串中检索contact.以下json包含联系人的array.这是我的json字符串.

I have json string. I want to retrieve the contact from json string. Following json contains array of contacts. here is my json string.

{
   "contacts": {
      "contact": [
         {
            "isConnection": false,
            "id": 33554611,
            "fields": [
               {
                  "id": 33554748,
                  "type": "name",
                  "value": {
                     "givenName": "Jhon",
                     "middleName": "",
                     "familyName": "Scot",
                     "prefix": "",
                     "suffix": "",
                     "givenNameSound": "",
                     "familyNameSound": ""
                  },
                  "editedBy": "OWNER",
                  "flags": [],
                  "categories": [],
                  "updated": "2012-12-23T07:40:23Z",
                  "created": "2012-12-23T07:40:23Z",
               },
               {
                  "id": 33554749,
                  "type": "email",
                  "value": "someone@example.com",
                  "editedBy": "OWNER",
                  "flags": [],
                  "categories": [],
                  "updated": "2012-12-23T07:40:23Z",
                  "created": "2012-12-23T07:40:23Z",
               }
            ]
         }
    }
}

在这里我要检索givenName,familyName,email的值.如何从json字符串中检索这些值.

Here I want to retrieves the values of givenName,familyName,email. How can I retrieve the values of these from json string.

注意:json中有contact的数组.我从这个json仅发布了一个联系人.

Note: there are array of contact in json. I have posted only one contact from this json.

我尝试过这样的事情.但是没用.

I tried something like this. But not worked.

JObject json = JObject.Parse(returnStr);
JArray fields = (JArray)json["contacts"]["contact"]["fields"][0];
JArray FValues = (JArray)json["contact"]["fields"]["value"];

我尝试过

public class Field
    {
        public int id { get; set; }
        public string type { get; set; }
        public object value { get; set; }
        public string editedBy { get; set; }
        public List<object> flags { get; set; }
        public List<object> categories { get; set; }
        public string updated { get; set; }
        public string created { get; set; }
        public string uri { get; set; }
        public bool? isConnection { get; set; }
    }

    public class contact
    {
        public bool isConnection { get; set; }
        public int id { get; set; }
        public List<Field> fields { get; set; }
        public List<object> categories { get; set; }
        public int error { get; set; }
        public int restoredId { get; set; }
        public string created { get; set; }
        public string updated { get; set; }
        public string uri { get; set; }
    }

    public class Contacts
    {
        public List<contact> contact { get; set; }
        public int count { get; set; }
        public int start { get; set; }
        public int total { get; set; }
        public string uri { get; set; }
        public bool cache { get; set; }
    }

    public class RootObject
    {
        public Contacts contacts { get; set; }
    }

JavaScriptSerializer serializer1 = new JavaScriptSerializer();
RootObject obje = serializer1.Deserialize<RootObject>(returnStr);

但这在obje中给了我0值.

推荐答案

  1. 首先使用 jsonlint

然后使用 json2csharp

public class Field
{
    public int id { get; set; }
    public string type { get; set; }
    public object value { get; set; }
    public string editedBy { get; set; }
    public List<object> flags { get; set; }
    public List<object> categories { get; set; }
    public string updated { get; set; }
    public string created { get; set; }
}

public class Contact
{
    public bool isConnection { get; set; }
    public int id { get; set; }
    public List<Field> fields { get; set; }
}

public class Contacts
{
    public List<Contact> contact { get; set; }
}

public class RootObject
{
    public Contacts contacts { get; set; }
}

  • 使用 Newtonsoft JSON 将Json反序列化为对象(s),则只需访问其属性值即可.

  • Use Newtonsoft JSON to deserialize your Json into object(s) then you may simply access its properties value.

    JsonConvert.DeserializeObject<RootObject>(string json);
    

  • 这篇关于从json字符串中检索值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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