2013-04-30 2 views
2

저에게 C# 클래스를 만드는 온라인 도구를 "설립했습니다"(http://json2csharp.com/). 이제는 JSON을 사용하고 JSON을 사용하는 WebClient를 만들어야합니다. 그들의 각각의 가치.WebClient가 JSON을 소비하고 속성 값을 보내려면

실제로 저는 이미 내 WebClient를 만들려고했지만 JSON2Csharp에서 생성 된 코드를 구현하는 방법을 모르겠습니다.

JSON2CSharp 코드 : 지금, 나는이 UserModel의 클래스와 함께이 작업을 수행하려고했습니다

public class UserModel 
{ 
    public int communityvisibilitystate { get; set; } 
    public int profilestate { get; set; } 
    public string personaname { get; set; } 
    public int lastlogoff { get; set; } 
    public string profileurl { get; set; } 
    public string avatar { get; set; } 
    public string avatarmedium { get; set; } 
    public string avatarfull { get; set; } 
    public int personastate { get; set; } 
} 

public class Response 
{ 
    public List<UserModel> users { get; set; } 
} 

public class RootObject 
{ 
    public Response response { get; set; } 
} 

:

public class UserModel 
{ 
    public UserModel() 
    { 
     WebClient request = new WebClient(); 
     var response = request.DownloadString(url); 

     JsonConvert.PopulateObject(response, this); 
    } 

    ... 
} 

그러나 성공하지

(그것은 예상대로). 그래서 묻습니다 : WebClient를 JSON2Csharp의 코드와 호환되게하려면 어떻게해야합니까?

미리 감사드립니다.

==== 업데이트 ====

내보기 :

@model DotaMix.Models.UserModel 
@{ 
    ViewBag.Title = @Model.personaname; 
} 

문제 : 타이틀이 보이지 않습니다.

==== 업데이트 ====

내 전체 모델의 코드 :

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 
using System.Data.Entity; 
using System.Globalization; 
using System.Web; 
using System.Web.Security; 
using System.Net; 
using System.Configuration; 
using System.IO; 
using System.Runtime.Serialization.Json; 
using System.Text; 
using Newtonsoft.Json; 
using Newtonsoft.Json.Linq; 
using ServiceStack.Text; 

namespace Mix.Models 
{ 
    public class UserModel 
    { 
     public UserModel() 
     { 
      WebClient request = new WebClient(); 
      var response = request.DownloadString(url); 

      JsonConvert.PopulateObject(response, this); 
     } 

     public string steamid { get; set; } 
     public int communityvisibilitystate { get; set; } 
     public int profilestate { get; set; } 
     public string personaname { get; set; } 
     public int lastlogoff { get; set; } 
     public string profileurl { get; set; } 
     public string avatar { get; set; } 
     public string avatarmedium { get; set; } 
     public string avatarfull { get; set; } 
     public int personastate { get; set; } 
    } 

    public class Response 
    { 
     public List<UserModel> users { get; set; } 
    } 

    public class RootObject 
    { 
     public Response response { get; set; } 
    } 
} 
+0

코드가 정상적으로 보입니다. 작동하지 않는 것은 무엇입니까? 어떤 오류가 발생합니까? – I4V

+0

그래서, 그는 단순히 작동하지 않습니다. WebClient와 속성 사이에 통신이없는 것 같습니다. –

+0

나는 정말로 당신의 질문을 얻지 못했다.u가 제공 한 코드가 작동해야하며 결함이 없습니다. "WebClient를 JSON2Csharp 코드와 호환 가능하게 만드는 것"은 무엇을 의미합니까? –

답변

3

첫째, 당신이 원하는 것을 수행하는 방법에 대한 전체 코드 여기를 살펴 : http://pastebin.com/aQNtjLHs

더 많은 반환 할 수 있습니다 점점 ​​된 JSON을 1 명 이상의 플레이어. 당신이 단지 1 반환해야하는 경우에는 다음과 같이 사용할 수 있습니다

컨트롤러 :

public ActionResult Index() 
{ 
    WebClient request = new WebClient(); 
    var url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/? key=B88B7699C6EACAE138DDB93BED6467EC&steamids=76561198026602449"; 
    var response = request.DownloadString(url); 

    var myObject = new RootObject(); 

    JsonConvert.PopulateObject(response, myObject); 
    //get only the first player  
    return View(myObject.response.players.FirstOrDefault()); 
} 

보기 :

이제
@model DotaMix.Models.Player 

@Model.personaname 

, 그 JSON 정말 1 명 이상의 플레이어를 반환하는 경우, 이처럼 할 수있는 :

컨트롤러 :

public ActionResult Index() 
{ 

    WebClient request = new WebClient(); 
    var url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=B88B7699C6EACAE138DDB93BED6467EC&steamids=76561198026602449"; 
    var response = request.DownloadString(url); 
    var myObject = new RootObject(); 
    JsonConvert.PopulateObject(response, myObject); 
    return View(myObject.response); 
} 
,536,913,632 10

보기 :

@model DotaMix.Models.Response 

@foreach (var player in Model.players) 
{ 
    <li>@player.personaname</li> 
} 
+0

그건 정확히 내가 원하는거야! 오, 레오, 정말 고마워! –

0

난 당신이 Newtonsoft 어셈블리를 사용하는 보았다. JsonProperty 정의를 포함 시키려고 했습니까?

[JsonProperty("TheProperty")] 

확인이 예 클래스 :

namespace Json.CareerJsonTypes 
{ 

    internal class Act13 
    { 

     [JsonProperty("completed")] 
     public bool Completed { get; set; } 

     [JsonProperty("completedQuests")] 
     public IList<CompletedQuest9> CompletedQuests { get; set; } 
    } 
} 
+0

안녕하세요, Carlos. 기고에 감사드립니다. 그래서, 나는 이것을 시도했다 :'[JsonProperty ("personaname")] public string personaname {get; 세트; }'. 그게 당신이 의미 한 것입니까? –

+0

예. 정확하게. NewtonSoft는 json 응답 –

+0

Ok를 사용하여 클래스 속성을 채우기 위해 해당 표시를 사용합니다. 나는 성공했지만 성공했다. = –

관련 문제