2012-12-17 18 views
40

używam biblioteki JSON NewtonSoft wygenerować ciąg JSON:Generowanie obiektu JSON z NewtonSoft w jednej linii

JObject out = JObject.FromObject(new 
      { 
       typ = "photos" 
      }); 

      return out.ToString(); 

wyjściowa:

{ 
    "typ": "photos" 
} 

Moje pytanie: Czy jest możliwe uzyskać dane wyjściowe w jednym wierszu, takim jak:

{"typ": "photos"} 
+0

dlaczego po prostu nie używać C# do zastąpienia nowych linii? – sircapsalot

+0

@Grant Thomas Tak, tylko dla kompresji! – Calimero

+0

@sircapsalot To nie działa tak dobrze, gdy dane zawierają spacje. – Dinerdo

Odpowiedz

40
var json = JsonConvert.SerializeObject(new { typ = "photos" }, Formatting.None); 
+2

to moja droga :) – Calimero

+0

To jest najczystsze rozwiązanie (i odpowiedź) –

0

Nie jestem pewien, czy to jest to, co masz na myśli, ale to, co robię, jest to ::

string postData = "{\"typ\":\"photos\"}"; 

EDIT: Po poszukiwaniach znalazłem this na Json.NET:

string json = @"{ 
    CPU: 'Intel', 
    Drives: [ 
    'DVD read/writer', 
    '500 gigabyte hard drive' 
    ] 
}"; 

JObject o = JObject.Parse(json); 

i może mógłbyś użyć informacji na stronie internetowej this.

Ale nie jestem pewien, czy wyjście będzie na jednej linii ... Powodzenia!

+0

mmhh chcę użyć JObject z NewtonSoft ... – Calimero

+0

Może możesz użyć [this] (http://stackoverflow.com/questions/10542810/using -jobject-and-jproperty-with-json-net-4-0) jako początek, JObject jest dla mnie nowy – Quispie

56

Można użyć przeciążenie JObject.ToString() który trwa Formatting jako parametru:

JObject obj = JObject.FromObject(new 
{ 
    typ = "photos" 
}); 

return obj.ToString(Formatting.None); 
+2

To jest najprostsze rozwiązanie i działa idealnie. – markj

0

Jeśli ktoś tutaj, kto nie chce używać zewnętrznej biblioteki w MVC, mogą skorzystać z wbudowanego System.Web.Script.Serialization.JavaScriptSerializer

Jedna linijka do tego będzie:

var JsonString = new JavaScriptSerializer().Serialize(new { typ = "photos" }); 
Powiązane problemy