cwharris
cwharris

Reputation: 18125

RestSharp/Json.NET Serialize Array as JSON Object

I have a slight situation. I'm interacting with a web service using RestSharp, where the service is requiring me to send the following as part of the request:

{
    "a":"a value",
    "b":"b value"
}

Which is all fine and dandy, because you could simply use a class such as this:

public class MyClass
{
    public string A { get; set; }
    public string B { get; set; }
}

However, I do not know know the property names at runtime. Therefore, I attempted to use an ExpandoObject, but of course, this simply serialized as a JSON array:

[
    "a":"a value",
    "b":"b value"
]

So, it would seem that I need to be able to serialize (and deserialize) a Dictionary (or IEnumerable<KeyValuePair<string, string>>) as a JSON object (in other words, use curly braces instead of a brackets).

Does anyone know how I might do this, preferably by using a Json.NET attribute, such that the functionality may be reused elsewhere?

Upvotes: 4

Views: 4844

Answers (2)

Anthony Johnston
Anthony Johnston

Reputation: 9584

how about using a JObject?

var obj = new JObject();

obj["One"] = "Value One";
obj["Two"] = "Value Two";
obj["Three"] = "Value Three";

var serialized = obj.ToString(Formatting.None);

gives you

{"One":"Value One","Two":"Value Two","Three":"Value Three"}

Upvotes: 3

Paul Sullivan
Paul Sullivan

Reputation: 2875

Use JavascripSerializer object from .net class libs. It supports reflection on the object it is serializing

see msdn docs

Upvotes: 0

Related Questions