Tengo una cadena y quiero conseguir algunos valores de se.

De mis cadenas parecer:

string1:

"{\r\n   \"id\": \"100000280905615\",
 \r\n \"name\": \"Jerard Jones\",
 \r\n   \"first_name\": \"Jerard\",
 \r\n   \"last_name\": \"Jones\",
 \r\n   \"link\": \"https://www.facebook.com/Jerard.Jones\",
 \r\n   \"username\": \"Jerard.Jones\",
 \r\n   \"gender\": \"female\",
 \r\n   \"locale\": \"en_US\"\r\n}"

texto2:

"{\r\n   \"id\": \"100000390001929\",
  \r\n   \"name\": \"\u05d1\u05d2\u05e8\u15dc\u25d9 \u05d1\u05e8\u05d5\u05e9\",
  \r\n   \"first_name\": \"\u05d4\u05d2\u05e7\u02dc\u05d9\",
  \r\n   \"last_name\": \"\u05d1\u05e8\u05d5\u05e9\",
  \r\n   \"link\": "https://www.facebook.com/people/\u05d2\u05d1\[email protected]\u05dc\u05d9-\u05d1\u05e8\u05d4\u05e9/100000390001929\",
  \r\n   \"gender\": \"female\",
  \r\n   \"locale\": \"he_IL\"\r\n}"

Por desgracia, no es una situación en la que una cadena de texto por el mismo concepto, pero sin algunos parámetros:

string3:

"{\r\n   \"id\": \"100000390001929\",
  \r\n   \"last_name\": \"\u05d1\u05e8\u05d5\u05e9\",
  \r\n   \"gender\": \"female\",
  \r\n   \"locale\": \"he_IL\"\r\n}"

¿Cómo puedo obtener los valores de: id, first_name, last_name, gender, locale?

Cualquier ayuda apreciada!

InformationsquelleAutor Alon Shmiel | 2013-07-12

4 Comentarios

  1. 97

    Sus cadenas con formato JSON, por lo que tendrá que analizar en un objeto. Para que se puede usar JSON.NET.

    Aquí es un ejemplo de cómo analizar una cadena JSON en un objeto dinámico:

    string source = "{\r\n   \"id\": \"100000280905615\", \r\n \"name\": \"Jerard Jones\",  \r\n   \"first_name\": \"Jerard\", \r\n   \"last_name\": \"Jones\", \r\n   \"link\": \"https://www.facebook.com/Jerard.Jones\", \r\n   \"username\": \"Jerard.Jones\", \r\n   \"gender\": \"female\", \r\n   \"locale\": \"en_US\"\r\n}";
    dynamic data = JObject.Parse(source);
    Console.WriteLine(data.id);
    Console.WriteLine(data.first_name);
    Console.WriteLine(data.last_name);
    Console.WriteLine(data.gender);
    Console.WriteLine(data.locale);

    Feliz codificación!

    • gracias.. he utilizado: dinámica de datos = JsonConvert.DeserializeObject(elementos[0].De texto);
    • +1 para dynamic en lugar de JObject
    • Todo esto es bueno, pero hasta que haya una dinámica de la cadena que necesita para llegar desde el json. por ejemplo los Usuarios.{ID}.Nombre de usuario
    • EDIT: se encontró una manera de utilizar este método:- String username = datos[«Usuario»][«» + Usuario][«Nombre»];
    • El amor de la dynamic de uso aquí! +1
    • Si trato de devolver una propiedad(por ejemplo de resultado) de la dinámica objetc, devuelve null :s

  2. 13

    Siguiente código está trabajando para mí.

    Utilizan:

    using System.IO;
    using System.Net;
    using Newtonsoft.Json.Linq;

    Código:

     using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                    {
                        using (Stream responseStream = response.GetResponseStream())
                        {
                            using (StreamReader responseReader = new StreamReader(responseStream))
                            {
                                string json = responseReader.ReadToEnd();
                                string data = JObject.Parse(json)["id"].ToString();
                            }
                        }
                    }
    
    //json = {"kind": "ALL", "id": "1221455", "longUrl": "NewURL"}
  3. 6

    Crear una clase como esta:

    public class Data
    {
        public string Id {get; set;}
        public string Name {get; set;}
        public string First_Name {get; set;}
        public string Last_Name {get; set;}
        public string Username {get; set;}
        public string Gender {get; set;}
        public string Locale {get; set;}
    }

    (No estoy 100% seguro, pero si eso no funciona, usted necesitará utilizar [DataContract] y [DataMember] para DataContractJsonSerializer.)

    A continuación, crear JSonSerializer:

    private static readonly XmlObjectSerializer Serializer = new DataContractJsonSerializer(typeof(Data));

    y deserializar objetos:

    //convert string to stream
    byte[] byteArray = Encoding.UTF8.GetBytes(contents);
    using(var stream = new MemoryStream(byteArray))
    {
        (Data)Serializer.ReadObject(stream);
    }
    • Json.NET es mucho mejor que DataContractJsonSerializer. Ver la tabla de comparación: json.codeplex.com
    • Y ServiceStack.El texto es mucho mejor que JSON.Net.
    • Me gusta Json.NET pero esta es una buena respuesta que no introducen una gran cantidad de código externo y fácil de entender.
  4. 2

    mi cadena

    var obj = {"Status":0,"Data":{"guid":"","invitationGuid":"","entityGuid":"387E22AD69-4910-430C-AC16-8044EE4A6B24443545DD"},"Extension":null}

    Siguiente código para obtener el guid:

    var userObj = JObject.Parse(obj);
    var userGuid = Convert.ToString(userObj["Data"]["guid"]);

Dejar respuesta

Please enter your comment!
Please enter your name here