Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Serialize Linq Results directly to JSON

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

like image 639
Enricosoft Avatar asked Oct 18 '11 17:10

Enricosoft


2 Answers

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);
like image 164
Darin Dimitrov Avatar answered Oct 06 '22 22:10

Darin Dimitrov


you can use Newtonsoft.JSON for that

heres's the syntax

var sb = from p in ent.people .........
string json = JsonConvert.SerializeObject(sb);
like image 24
Mawardy Avatar answered Oct 06 '22 22:10

Mawardy