Serialize Linq Results directly to JSON

Enricosoft picture Enricosoft · Oct 18, 2011 · Viewed 12.6k times · Source

I'm developing a WebService that excecute linq to sql db and put the results into a VAR variable. Then I wanna serialize the result inside VAR to json format using javascript serializer (c#). Something like this:

var sb= from p in ent.people .........
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new       System.Runtime.Serialization.Json.DataContractJsonSerializer(sb.GetType());
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, sb);
string json = System.Text.Encoding.Default.GetString(ms.ToArray());

BUT I GET AN ERROR RESPONSE LIKE THIS:

Type      'System.Data.Objects.ObjectQuery`1[<>f__AnonymousType2d`5[System.String,System.Nu llable`1[System.Int32],System.Nullable`1[System.Int32],System.Int32,System.String]]' cannot be serialized. 

Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute. If the type is a collection, consider marking it with the CollectionDataContractAttribute. See the Microsoft .NET Framework documentation for other supported types.

HOW CAN I SERIALIZE LINQ RESULTS DIRECTLY TO JSON?? Thanks a lot for all answers! Enrico

Answer

Darin Dimitrov picture Darin Dimitrov · Oct 18, 2011

DataContractJsonSerializer doesn't support anonymous objects. If you want to serialize anonymous objects you could use the JavaScriptSerializer class:

var sb = from p in ent.people .........
var serializer = new JavaScriptSerializer();
string json = serializer.Serialize(sb);