Why can't I reference System.Runtime.Serialization.Json in C#

Methodician picture Methodician · Mar 7, 2014 · Viewed 65.8k times · Source

I want to use an API to get info from the interwebz. The API returns data in Json format.

  1. I'm running Microsoft Visual Studio C# 2010 Express addition.
  2. It appears that I have the .NET Framework 4 Client Profile set as my "Target framework" but I'm honestly not sure exactly what this means.
  3. This is a Windows Forms Application...

Not much code to show because I can't really get started without the appropriate using statement...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Net;
using System.Runtime.Serialization.Json;

I get this error:

The type or namespace name 'Json' does not exist in the namespace 'System.Runtime.Serialization' (are you missing an assembly reference?)

Am I missing a DLL file or something? Based on my hours of fruitlessly searching for solutions, I understand that the .NET 4.xx should already have the tools needed to parse up a Json formatted string?

Answer

CathalMF picture CathalMF · Mar 7, 2014

The System.Runtime.Serialization.Json Namespace is in two different DLL's depending on your .net framework.

In .NET 3.5 It is in System.ServiceModel.Web.dll

In .NET 4.0 and above It is in System.Runtime.Serialization.dll.

Make sure you have added the correct DLL as a reference in your project and add using System.Runtime.Serialization.Json; to the top of your code file.

EDIT - Consider using JSON.NET

Even though the .NET Framework supplies its own JSON Serialization and Deserialization namespaces (DataContractJsonSerializer and JavaScriptSerializer) you should investigate whether you would be better off using JSON.NET.

JSON.NET is easier to use, better performance and has far more features. http://www.newtonsoft.com/json/help/html/JsonNetVsDotNetSerializers.htm