-2
votes

C # Comment obtenir des données de JSON

J'ai ces données JSON que je reçois depuis mon service Web, le problème est maintenant que je cherche actuellement à récupérer les données hors support carré, car mes codes actuels ne peuvent que récupérer la météo code> données.

et chaque fois que j'essaie d'obtenir les données de coord code> il continue de me retourner la valeur 0. p> xxx pré>

c'est mon Code actuel J'essaie d'obtenir les données du support Curly Coord CODE>, mais il conserve de donner 0,00 Toute aide serait appréciée merci! P>

public partial class Book : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    public class Result
    {
        public string id{ get; set; }
        public string main{ get; set; }
        public string description{ get; set; }
        public string icon{ get; set; }
        public decimal lon{ get; set; }

    }

    public class SearchList
    {
        public int resultCount;
        public Result[] weather;
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        string searchTerm = TextBox1.Text;
        var webRequest = (HttpWebRequest)WebRequest.Create
        ("http://samples.openweathermap.org/data/2.5/weather?id=2172797&appid=b6907d289e10d714a6e88b30761fae22");
        var webResponse = (HttpWebResponse)webRequest.GetResponse();
        if (webResponse.StatusCode == HttpStatusCode.OK)
        {
            JavaScriptSerializer json = new JavaScriptSerializer();
            StreamReader sr = new StreamReader(webResponse.GetResponseStream());
            string resString = sr.ReadToEnd();
            SearchList list = json.Deserialize<SearchList>(resString);
            GridView1.DataSource = list.weather;
            GridView1.DataBind();
        }
        else
            Label1.Text = "Invalid Response";
    }
}


2 commentaires

Mise à jour recherche de la recherche pour inclure les autres données souhaitées


@Nkosi Comment puis-je faire ça pouvez-vous me montrer?


4 Réponses :


0
votes

Vous n'avez pu récupérer que les données météorologiques car il a été défini dans le modèle d'objet.

Mettre à jour Définition de la classe Pour inclure les autres données souhaitées xxx < / Pre>

de cette façon, le JavasCriPTHtsérializer saura l'inclure lors de la désériorialisation du JSON.


0 commentaires

1
votes

Vos modèles sont incomplets. Vous pouvez utiliser JSONCSHARP pour générer des cours.

public class Coord
{
    public double lon { get; set; }
    public double lat { get; set; }
}

public class Weather
{
    public int id { get; set; }
    public string main { get; set; }
    public string description { get; set; }
    public string icon { get; set; }
}

public class SearchList
{
    public Coord coord { get; set; }
    public List<Weather> weather { get; set; }
    public int resultCount;
}


7 commentaires

Lorsque j'ajoute votre code, il ne me montre toujours que les données météo . Suis-je toujours supposé juste le faire comme ça? Liste de la recherche de la recherche = JSON.Desérialize (RessRing); Gridview1.dataSource = liste.weather;


Vous définissez la DataSource à la liste. Vous devez définir DataSource = liste, pour avoir des conditions météorologiques et des coordonnées.


Vous voulez dire comme ceci gridview1.datasource = liste; il me donne toujours une erreur Source de données est un type non valide


@BestJeaniste basé sur vos réponses, cela ressemble à un XY problème . Vous devez clarifier dans la question initiale quel est le problème réel


@BestJeanist Comme indiqué par Nkosi, vous avez un problème différent maintenant. Dans la liste d'objets, vous avez votre objet de coord et votre liste de temps. C'était votre problème. Maintenant, vous devez adapter la liaison à afficher une liste de conditions météorologiques et un objet de type Coord.


@Brunocaceiro Comment puis-je faire ça?


Juste poser une question différente. Et fournir le code pour la grilleview1



0
votes

Vous devez ajouter le modèle pour Coord xxx

Vous devrez ajouter plus de modèles pour chaque type de données. Vous ne pouvez pas simplement accéder à list.coord.lon à partir de list.weather.lon


0 commentaires

0
votes

Utilisez JOWJECT, vous pouvez extraire chaque jeton en utilisant

`Jobject.SelectToken("datayouwant")`.


0 commentaires