2013-10-30 2 views
0
)

JSON stringC#에 더 좋게 만들 필요가 있습니다. 내 프로젝트에 사용되는 클래스입니다 JSON formatter in C#?JSON 형식 (C#

: : 여기의 코드를 시도

class JsonHelper 
{ 
    private const string INDENT_STRING = " "; 
    public static string FormatJson(string str) 
    { 
    var indent = 0; 
    var quoted = false; 
    var sb = new StringBuilder(); 
    for (var i = 0; i < str.Length; i++) 
    { 
     var ch = str[i]; 
     switch (ch) 
     { 
     case '{': 
     case '[': 
     sb.Append(ch); 
     if (!quoted) 
     { 
     sb.AppendLine(); 
     Enumerable.Range(0, ++indent).ForEach(item => sb.Append(INDENT_STRING)); 
     } 
     break; 
     case '}': 
     case ']': 
     if (!quoted) 
     { 
      sb.AppendLine(); 
     Enumerable.Range(0, --indent).ForEach(item => sb.Append(INDENT_STRING)); 
     } 
     sb.Append(ch); 
     break; 
     case '"': 
     sb.Append(ch); 
     bool escaped = false; 
     var index = i; 
     while (index > 0 && str[--index] == '\\') 
      escaped = !escaped; 
     if (!escaped) 
      quoted = !quoted; 
     break; 
     case ',': 
     sb.Append(ch); 
     if (!quoted) 
     { 
     sb.AppendLine(); 
     Enumerable.Range(0, indent).ForEach(item => sb.Append(INDENT_STRING)); 
     } 
     break; 
     case ':': 
     sb.Append(ch); 
     if (!quoted) 
      sb.Append(" "); 
     break; 
     default: 
     sb.Append(ch); 
     break; 
     } 
    } 
    return sb.ToString(); 
    } 
} 

static class Extensions 
{ 
    public static void ForEach<T>(this IEnumerable<T> ie, Action<T> action) 
    { 
    foreach (var i in ie) 
    { 
     action(i); 
    } 
    } 
} 

을 내 페이지에 나는 클래스를 호출하고 화면에 문자열을 작성하는이 코드가 있습니다.

IRestResponse response5 = GetCampaigns(); 
string formattedJason = JsonHelper.FormatJson(response5.Content.ToString()); 
Response.Write(formattedJason); 

내 문제는이 같은 그래서 포맷 된 JSON 나던 줄 바꿈을 가지고있다 : 내가 좋아하는 더 좋은 JSON 뭔가 얻을 수있는 방법

{ "total_count": 10, "items": [ { "clicked_count": 2559, "opened_count":  7021, "submitted_count": 3102, "unsubscribed_count": 0, "bounced_count": 4, "id": "3", "name": "Approved Email", "created_at": "Wed, 09 Oct 2013 17:16:35 GMT", "delivered_count": 2984, "complained_count": 0, "dropped_count": 118 }, { "clicked_count": 240, "opened_count": 434, "submitted_count": 183, "unsubscribed_count": 0, "bounced_count": 0, "id": "5", "name": "Ready to Shop", "created_at": "Wed, 09 Oct 2013 00:21:08 GMT", "delivered_count": 181, "complained_count": 0, "dropped_count": 2 } ] } 

:

{ 
"status" : "OK", 
"results" : [ 
    { 
     "types" : [ 
      "locality", 
      "political" 
     ], 
     "formatted_address" : "New York, NY, USA", 
     "address_components" : [ 
      { 
       "long_name" : "New York", 
       "short_name" : "New York", 
       "types" : [ 
        "locality", 
        "political" 
       ] 
      }, 
+10

[JSON.Net] (http://james.newtonking.com/json)을 사용하는 것이 좋습니다. 이렇게하면 삶이 훨씬 쉬워집니다! – JMK

+1

''[ '''''''''''''''?''?''뒤에 형식 코드에''\ n' '을 추가 할 수 없습니까? 아, 두 괄호 닫는 버전. –

+0

나는 그것을 Nuget에서 설치하려고했지만 어떤 이유로 Newtonsoft.Json을 사용하여 왜 사용하는지 확신 할 수 없다. 페이지 상단에 그것이 내게이 오류를 줬어 : \t "유형 또는 네임 스페이스 이름 'Newtonsoft'찾을 수 없습니다 (사용 지시문이나 어셈블리 참조가 누락 되었습니까?)" – Alma

답변

0

을 당신 그냥 메모장에 텍스트를 넣을 수 + + json 문자열을 포맷 JSMin 플러그인을 사용합니다. 또는 JSON.Net은 당신을위한 솔루션입니다.