2013-07-11 6 views
11

간단한 웹 프로토 타이핑 연습의 일부로 사용할 JSON 파일을 만들고 싶습니다. LinqPAD는 필자가 필요로하는 형태로 내 DB에서 데이터에 액세스하는 데 적합하지만 JSON으로 쉽게 가져올 수는 없습니다.LinqPAD에서 JSON으로 데이터를 내보내는 방법은 무엇입니까?

반환되는 모든 것을 처리하기 위해 자바 스크립트를 적용 할 수 있기 때문에 실제로 스키마가 무엇인지는 신경 쓰지 않습니다.

이것이 가능합니까?

답변

18

더 유창 솔루션은 Linqpad에 "내 확장"파일에 다음과 같은 방법을 추가하는 것입니다

public static String DumpJson<T>(this T obj) 
{ 
    return 
     obj 
     .ToJson() 
     .Dump(); 
} 

public static String ToJson<T>(this T obj) 
{ 
    return 
     new System.Web.Script.Serialization.JavaScriptSerializer() 
     .Serialize(obj); 
} 

그럼 당신은 당신이 원하는 쿼리에서 다음과 같이 사용할 수 있습니다 :

Enumerable.Range(1, 10) 
.Select(i => 
    new 
    { 
     Index = i, 
     IndexTimesTen = i * 10, 
    }) 
.DumpJson(); 

"ToJson"을 별도로 추가하여 "Expessions"과 함께 사용할 수 있습니다.

+5

일단 설정되면 더 멋지 네요. 매우 감사합니다! 저자가 LinqPAD에 기본적으로 이것을 포함하기를 바랍니다. 다른 사람들에게 주시면, 내 대답에 설명 된대로 _My Extensions_ 문서에'System.Web.Extensions.dll'을 추가해야합니다. –

+0

데이터 형식에 관계가있는 경우 실패합니다. 'LINQPad.User.YourType'형식의 개체를 serialize하는 동안 순환 참조가 검색되었습니다. –

9

이 기능은 직접 지원되지 않으며 기능 요청 here을 열었습니다. 이것을 유용하다고 생각한다면 투표하십시오. 에서는 System.Web.Extensions.dll

    • 설정된 언어 에 C# 1 규격 (들)
    • 어셈블리 참조 추가 (프레스 F4)

      는 해주기위한 해결 방법은 다음을 수행한다

      동일한 대화 상자에서 네임 스페이스 추가 System.Web.Script.Serialization

    • 다음과 같은 코드를 사용하여 쿼리를 JSON
    new JavaScriptSerializer().Serialize(query).Dump(); 
    
  • +0

    감사합니다. 구현하는 가장 쉬운 해결책이었습니다. – seangwright

    +0

    직접적인 해결책. – MarwaAhmad

    2

    버전 4.47부터 LINQPad는 JSON을 내 보냅니다. 새로운 lprun.exe 유틸리티와 함께 ​​사용자의 요구를 충족시킬 수 있습니다.

    http://www.linqpad.net/lprun.aspx

    6

    Json.NET이 서식을 들여 않기 때문에과 솔루션, 그리고 JSON가 제대로 날짜를 렌더링합니다. .Dump()로)에을

    public static object DumpJson(this object value, string description = null) 
    { 
        return GetJson(value).Dump(description); 
    } 
    
    private static object GetJson(object value) 
    { 
        object dump = value; 
    
        var strValue = value as string; 
        if (strValue != null) 
        { 
         var obj = JsonConvert.DeserializeObject(strValue); 
         dump = JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.Indented); 
        } 
        else 
        { 
         dump = JsonConvert.SerializeObject(value, Newtonsoft.Json.Formatting.Indented); 
        } 
    
        return dump; 
    } 
    

    사용 .DumpJson (: NuGet에서 Json.NET을 추가하고 를 참조 Newtonsoft.Json.dll을 당신의 "내 확장"쿼리뿐만 아니라 다음 코드 결과를 렌더링합니다. 필요한 경우 .DumpJson()을 다른 서명으로 덮어 쓸 수 있습니다.