2014-02-17 3 views
0

아래 목록에서 볼 수 있듯이 현재이 목록의 인스턴스에 대해 잘 작동하는 JSON 문자열을 처리하기 위해 목록을 사용하고 있습니다. 내가하고 싶은 것은 여러 JSON 문자열에 사용할 수 있도록 변환을 완전히 처리하는 이러한 메서드를 만드는 것입니다.C#에서 변수를 목록 유형으로 사용하기

이것은 현재 사용중인 코드의 약자입니다.

public class GetPerson 
{ 
    public string fooName { get; set; } 
    public string fooAddress { get; set; } 
    public string fooPosition { get; set; } 
} 
public class GetPosition 
{ 
    public string fooTitle { get; set; } 
    public string fooDepartment { get; set; } 
    public string fooSalary { get; set; } 
} 

    private static List<GetPerson> ConvertToList(string jsonString) 
    { 
     List< listJson = new List<JsonObject>(); 
     listJson = (List<GetPerson>)JsonConvert.DeserializeObject<List<GetPerson>>(jsonString); 
     return listJson; 
    } 

이것은 그냥 빨리 샘플하지만 List<GetPerson>은 내가 원하는 것 같은 와과 GetPosition 분명이 작동하지 않습니다 약자로하기 때문에, 그것은 재사용 할 수 있도록 일반적인 할 필요가 무엇인가 그에 따라 유형을 변경하는 코드를 반복 할 수 있어야합니다.

변수를 유형으로 지정할 수있는 방법이 있습니까? 나는 이것에 대해 또 다른 질문을 보았지만 세부 사항에 대해서는 언급하지 않았다. 아니면 이것이 달성 될 수있는 다른 방법이 있습니까?

미리 감사드립니다.

답변

0

당신은 이제 일반적인 유형으로 모두 GetPersonGetPosition를 사용하여 호출 할 수있는 다양한 유형의

private static List<T> ConvertToList<T>(string jsonString) 
{ 
    return (List<T>)JsonConverty.DeserializeObject<List<T>>(jsonString(); 
} 

ConvertToList 기능의 재사용을 할 수 있도록 제네릭을 사용할 수 있습니다.

var listOfPeople = ConvertToList<GetPerson>(personJson); 
var listOfPositions = ConvertToList<GetPosition>(positionJson); 

제네릭에 대한 자세한 내용은 MSDN을 참조하십시오. 또한

, 당신이 원하는 모든이에 경우 [드] JSON 직렬화, 당신은 무엇을 할 수있는 기능이 내장되어 모두 JSON.net, Jil 또는 ServiceStack.Text 같은 그것에 대해 타사 라이브러리를 고려할 수 있습니다 너는하려고하는거야.

+0

최고 감사() ConvertToList()는 일반적인하고 ConvertToList에 Type Paramter으로 원하는 클래스를 통과해야합니다. generic 콜렉션에 대해서는 알고 있었지만 정확하게 콜렉션을 구현하는 방법을 알지 못했습니다. 또한 Json.net을 활용하여 Json의 목록을 변환합니다. – Corey

1

매우 간단합니다. 당신은 당신의 답변을

private static List<T> ConvertToList<T>(string jsonString) 
{ 
    var listJson = new List<JsonObject>(); 
    listJson = (List<T>)JsonConvert.DeserializeObject<List<T>>(jsonString); 
    return listJson; 
} 

var personList = ConvertToList<GetPerson>(jsonString); 
var positionList = ConvertToList<GetPosition>(jsonString);