0
我有一個JSON string
,我需要使它更好在C#
。我試圖將代碼從這裏: JSON formatter in C#?C#中的JSON格式#
這是一類我在項目中使用:
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可是沒有一個換行符所以它是這樣的:
{ "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 } ] }
我怎樣才能得到一個更好的Json是這樣的:
{
"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"
]
},
我建議使用[JSON.Net](http://james.newtonking.com/json),這會讓你的生活變得更輕鬆! – JMK
難道你不能只在你的格式化代碼中添加'''',''和'','?哦,兩個括號的結尾。 –
我試圖使用它我從Nuget安裝它,但由於某種原因,我不知道爲什麼當我使用Newtonsoft.Json;在頁面的頂部,它給了我這個錯誤:\t「無法找到類型或名稱空間名稱'Newtonsoft'(您是否缺少使用指令或程序集引用?」) – Alma