Estoy tratando de recuperar Value 's usando Key' s en el JSON devuelto.

Intenté lo siguiente pero ninguno funcionó.

1.)

string email= json.emailAddress;

2.)

string email= json["emailAddress"].ToString();

Código completo

 var api= new Uri("https://api.linkedin.com/v1/people/~:(picture-url)?format=json");
 using (var webClient = new WebClient())
 {
       webClient.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token);

       webClient.Headers.Add("x-li-format", "json");

       dynamic  json = webClient.DownloadString(api);
  }

JSON regresó

{
  "emailAddress": "xxxx@xx.com",
  "firstName": "xxx",
  "formattedName": "xxxx xxxx",
  "id": "xxxxxx",
  "lastName": "xxxxxx",

}
0
Illep 27 dic. 2016 a las 06:27

3 respuestas

La mejor respuesta

Para responder a su pregunta utilizando su enfoque, la forma más sencilla (sin utilizar JSON.Net) es utilizar JavaScriptSerializer

// have this at the top with your using statements
using System.Web.Script.Serialization;

Y en su código, use JavaScriptSerializer como se muestra a continuación.

var api= new Uri("https://api.linkedin.com/v1/people/~:(picture-url)?format=json");
 using (var webClient = new WebClient())
 {
     webClient.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token);    
     webClient.Headers.Add("x-li-format", "json");
    string json = webClient.DownloadString(api);

    JavaScriptSerializer serializer = new JavaScriptSerializer(); 
    dynamic data = serializer.Deserialize<object[]>(json);
    string emailAddress = data.emailAddress;
  }

La mejor manera sería crear POCO de tipo fuerte para sus datos JSON devueltos utilizando algo como http://json2csharp.com/ y luego deserializar usando la Biblioteca JSON.Net .

4
Shiva 27 dic. 2016 a las 03:36

Puede instalar Newtonsoft Json.Net para recuperar el valor de una cadena JSON. Simplemente puedes crear una clase como

public class Rootobject
{
    public string emailAddress { get; set; }
    public string firstName { get; set; }
    public string formattedName { get; set; }
    public string id { get; set; }
    public string lastName { get; set; }
}

Y luego deserializarlo con un simple código de una línea.

var ser = JsonConvert.DeserializeObject<Rootobject>(YourJsonString);
Console.WriteLine(ser.emailAddress);
3
Community 23 may. 2017 a las 12:24
result={
         "emailAddress": "xxxx@xx.com",
         "firstName": "xxx",
         "formattedName": "xxxx xxxx",
         "id": "xxxxxx",
         "lastName": "xxxxxx"
        }
 var ser = new JavaScriptSerializer();
 var people = ser.Deserialize<object[]>(result);
foreach(var obj in people)
{
  Email = obj.emailAddress;
  ...
}
1
Tran Anh Hien 27 dic. 2016 a las 03:39