C # 목록으로 JSON 문자열 역 직렬화

벤 카테시

WCF 서비스의 JSON 문자열을 null 출력을 표시하는 C # 목록으로 역 직렬화하려고합니다.

WCF 서비스

[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json
)]
public String getuserSite(String UserCode)
{
    string s = "";
    {
        _ds = new DataSet();
        try
        {
            _dbObj = new Database();
            if (ConfigurationManager.AppSettings["DB"].ToString() == "S")
            {
                string[] _paramNames = { "@UserCode" };
                object[] _paramvalue = { UserCode };
                _ds = _dbObj.GetDatasetProc("getuserSite", _paramNames, _paramvalue);
            }
            else
            {
                string[] _paramNames = { "UserCode" };
                object[] _paramvalue = { UserCode };
                _ds = _dbObj.GetDatasetProc("getuserSite", _paramNames, _paramvalue);
            }
            return **GetJSONString**(_ds, "Sites");
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            _dbObj.Close();
        }    
}

GetJSONString 메서드는 JSON 문자열을 반환합니다.

 [OperationContract]
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest,
    RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json
    )]
    public static string GetJSONString(DataSet Ds, String Name)
    {
        DataTable Dt = Ds.Tables[0];
        if (Name != "")
        {
            Dt.TableName = Name;
        }
        string[] StrDc = new string[Dt.Columns.Count];
        string HeadStr = string.Empty;

        for (int i = 0; i < Dt.Columns.Count; i++)
        {

            StrDc[i] = Dt.Columns[i].Caption;

            HeadStr += "\"" + StrDc[i] + "\" : \"" + StrDc[i] + i.ToString() + "¾" + "\",";
        }

        HeadStr = HeadStr.Substring(0, HeadStr.Length - 1);

        StringBuilder Sb = new StringBuilder();
        if (Name != "")
        {
            Sb.Append("{\"" + Dt.TableName + "\" : [");
        }
        else
        {
            Sb.Append("[");
        }

        for (int i = 0; i < Dt.Rows.Count; i++)
        {

            string TempStr = HeadStr;
            Sb.Append("{");

            for (int j = 0; j < Dt.Columns.Count; j++)
            {

                TempStr = TempStr.Replace(Dt.Columns[j] + j.ToString() + "¾", Dt.Rows[i][j].ToString().Replace("\r\n", "<br>").Replace("\r", "<br>").Replace("\n", "<br>").Replace("\"",""));
            }

            if (i < Dt.Rows.Count - 1) { Sb.Append(TempStr + "},"); } else { Sb.Append(TempStr + "}"); };
        }

        Sb = new StringBuilder(Sb.ToString().Substring(0, Sb.ToString().Length));
        if (Name != "")
        {
            Sb.Append("]}");
        }
        else
        {
            Sb.Append("]");
        }
              return Sb.ToString();    

    }    

Json 문자열 출력

"\"{\\\"Sites\\\" : [{\\\"EQ_DESC\\\" : \\\"SIERRA India\\\",\\\"EQ_CODE\\\" : \\\"1\\\"},{\\\"EQ_DESC\\\" : \\\"SIERRA Dubai\\\",\\\"EQ_CODE\\\" : \\\"24\\\"},{\\\"EQ_DESC\\\" : \\\"SIERRA Malaysia\\\",\\\"EQ_CODE\\\" : \\\"99\\\"},{\\\"EQ_DESC\\\" : \\\"SIERRA US\\\",\\\"EQ_CODE\\\" : \\\"100\\\"},{\\\"EQ_DESC\\\" : \\\"Mars India\\\",\\\"EQ_CODE\\\" : \\\"110\\\"},{\\\"EQ_DESC\\\" : \\\"???\\\",\\\"EQ_CODE\\\" : \\\"151\\\"},{\\\"EQ_DESC\\\" : \\\"turkey\\\",\\\"EQ_CODE\\\" : \\\"2299\\\"},{\\\"EQ_DESC\\\" : \\\"SIERRA Infosys\\\",\\\"EQ_CODE\\\" : \\\"2331\\\"},{\\\"EQ_DESC\\\" : \\\"Infosys\\\",\\\"EQ_CODE\\\" : \\\"2338\\\"}]}\""

C # 클래스 (모델)

 public class Site
{
 public string EQ_DESC { get; set; }
 public string EQ_CODE { get; set; }
}
public class RootObject
{
 public List<Site> Sites { get; set; }
}

이제 json을 목록으로 역 직렬화

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                    {
                        /* Deserializing json data from service */
                        var jsoncontent = reader.ReadToEnd();
                        string s = jsoncontent.ToString();

                    var results = JsonConvert.DeserializeObject<RootObject>(s);

출력 :

var results = JsonConvert.DeserializeObject<Rootobject>(s); 

** 이전에 시도했지만 null을 반환합니다 **

 var results = JsonConvert.DeserializeObject<List<site>>(s);

위의 코드는 Null을 반환합니다.

문제를 해결하도록 친절하게 제안합니다.

감사

벤 카테시

jhontarrede

JSON 문자열 출력은 List<Site>. RootObject클래스는 아니다 List<Site>그러나 속성이 포함되어 Sites유형의를 List<Site>. 다음과 같이 시도해야합니다.

첫 번째 해결책 :

var results = JsonConvert.DeserializeObject<List<Site>>(s);

두 번째 솔루션 :

다음과 같이 RootObject를 수정하십시오.

public class RootObject : List<Site>
{
  //Whatever you want
}

그리고 다음과 같이 deserializer를 사용합니다.

var results = JsonConvert.DeserializeObject<RootObject>(s);

도움이 되었기를 바랍니다

편집 : 이것은 테스트 할 것입니다

왜 JSON 문자열을 반환 했습니까? 즉, 직렬 변환기를 사용하는 경우 결과를 JSON 문자열로 자동으로 변환하도록 서버를 지정한 다음 요청 내에서 스트림을 검색하고 이미 수행 한대로 역 직렬화 할 수 있습니다. 내 컴퓨터에서 작동하는 것을 보여 드리겠습니다.

FIRST : 서비스 계약 인터페이스 :

[ServiceContract]
public interface IServiceContract
{
   [OperationContract]
   [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest,
   RequestFormat = WebMessageFormat.Json,
   ResponseFormat = WebMessageFormat.Json)]
       List<Site> getuserSite(String UserCode);
}

SECOND : 서비스 계약 이행

public class ServiceContract : IServiceContract
{
   public List<Site> getuserSite(String UserCode)
   {
      //Do whatever you want that return a List<Site>
   }
}

셋째 : 모델

[DataContract]
public class Site
{
   [DataMember]
    public string EQ_DESC { get; set; }
   [DataMember]
    public string EQ_CODE { get; set; }
}

넷째 : 데이터 계약을 참조한 후 클라이언트 측에서

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{

      /* Deserializing json data from service */

      DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(List<Site>));
      var result= deserializer.ReadObject(response.GetResponseStream());
}

결과적으로 JSON deserialized 응답에 해당하는 목록이 있습니다. 코드에서 작동하도록하는 방법을 찾길 바랍니다. 필요한 경우 저에게 연락 주시기 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C #의 JSON 배열을 목록으로 역 직렬화

분류에서Dev

json 문자열을 .NET 개체 목록으로 역 직렬화

분류에서Dev

json 문자열을 개체 C # .net으로 역 직렬화

분류에서Dev

JSON 문자열을 C # 및 Unity의 개체로 역 직렬화

분류에서Dev

Newtonsoft.JSON을 사용하여 C #으로 Json 문자열 역 직렬화

분류에서Dev

json 문자열을 일반 형식 목록으로 역 직렬화

분류에서Dev

C # 문자열로 시작하는 키 이름으로 JSON 역 직렬화

분류에서Dev

JSON을 C # 개체 목록으로 역 직렬화

분류에서Dev

C #에서 중첩 된 목록으로 JSON 역 직렬화

분류에서Dev

JSON 개체를 .Net 목록으로 역 직렬화 (C #)

분류에서Dev

JSON 배열을 목록으로 역 직렬화

분류에서Dev

JSON 문자열을 C # 개체로 역 직렬화 할 때 빈 클래스

분류에서Dev

JSON 목록을 C #의 개체 목록으로 역 직렬화 할 수 없음

분류에서Dev

C #으로 json 역 직렬화

분류에서Dev

JSON 배열을 C #으로 역 직렬화

분류에서Dev

AWS Lambda에서 중첩 된 JSON 문자열 역 직렬화 (C #)

분류에서Dev

JSON 역 직렬화 구문 분석 C #

분류에서Dev

C #에서 JSON 배열 역 직렬화

분류에서Dev

사용자 지정 목록을 JSON C #으로 직렬화

분류에서Dev

JSON 배열 배열을 C # 클래스로 역 직렬화

분류에서Dev

JSON 문자열을 객체로 역 직렬화하는 방법

분류에서Dev

JSON을 C # 개체로 역 직렬화

분류에서Dev

JSON 배열을 C # 개체로 역 직렬화 (TFL API)

분류에서Dev

이름이없는 배열로 C # JSON 역 직렬화

분류에서Dev

json.net 객체 배열로 역 직렬화 C #

분류에서Dev

JSON 문자열 역 직렬화

분류에서Dev

Google Financial JSON 문자열 역 직렬화

분류에서Dev

Newtonsoft JSON 문제로 목록 역 직렬화

분류에서Dev

C # / JSON 개체 직렬화, 역 직렬화 및 대 / 소문자 문제 없음

Related 관련 기사

  1. 1

    C #의 JSON 배열을 목록으로 역 직렬화

  2. 2

    json 문자열을 .NET 개체 목록으로 역 직렬화

  3. 3

    json 문자열을 개체 C # .net으로 역 직렬화

  4. 4

    JSON 문자열을 C # 및 Unity의 개체로 역 직렬화

  5. 5

    Newtonsoft.JSON을 사용하여 C #으로 Json 문자열 역 직렬화

  6. 6

    json 문자열을 일반 형식 목록으로 역 직렬화

  7. 7

    C # 문자열로 시작하는 키 이름으로 JSON 역 직렬화

  8. 8

    JSON을 C # 개체 목록으로 역 직렬화

  9. 9

    C #에서 중첩 된 목록으로 JSON 역 직렬화

  10. 10

    JSON 개체를 .Net 목록으로 역 직렬화 (C #)

  11. 11

    JSON 배열을 목록으로 역 직렬화

  12. 12

    JSON 문자열을 C # 개체로 역 직렬화 할 때 빈 클래스

  13. 13

    JSON 목록을 C #의 개체 목록으로 역 직렬화 할 수 없음

  14. 14

    C #으로 json 역 직렬화

  15. 15

    JSON 배열을 C #으로 역 직렬화

  16. 16

    AWS Lambda에서 중첩 된 JSON 문자열 역 직렬화 (C #)

  17. 17

    JSON 역 직렬화 구문 분석 C #

  18. 18

    C #에서 JSON 배열 역 직렬화

  19. 19

    사용자 지정 목록을 JSON C #으로 직렬화

  20. 20

    JSON 배열 배열을 C # 클래스로 역 직렬화

  21. 21

    JSON 문자열을 객체로 역 직렬화하는 방법

  22. 22

    JSON을 C # 개체로 역 직렬화

  23. 23

    JSON 배열을 C # 개체로 역 직렬화 (TFL API)

  24. 24

    이름이없는 배열로 C # JSON 역 직렬화

  25. 25

    json.net 객체 배열로 역 직렬화 C #

  26. 26

    JSON 문자열 역 직렬화

  27. 27

    Google Financial JSON 문자열 역 직렬화

  28. 28

    Newtonsoft JSON 문제로 목록 역 직렬화

  29. 29

    C # / JSON 개체 직렬화, 역 직렬화 및 대 / 소문자 문제 없음

뜨겁다태그

보관