En la tecnología
Silverlight puedes utilizar el espacio de nombres
System.Json, en la tecnología
Windows Universal puedes utilizar el espacio de nombres
Windows.Data.Json, y en el resto de tecnologías puedes utilizar la class
System.Runtime.Serialization.Json.JsonReaderWriterFactory, un ejemplo
hardcodeado de esto último lo puedes encontrar en mi
API gratuita
ElektroKit donde extraigo la respuesta de un servicio web que me devuelve un documento JSON y lo leo de la misma forma que si fuese un documento Xml:
( en el bloque de la función
GeoLocate )
Sin embargo, la forma portable y también la más sofisticada o ventajosa de trabajar con el formato
JSON en
.NET es utilizando la libreria de terceros
JSON.NET, sobre todo al parsear este tipo de formato.
En su web tienes una breve comparación de rendimiento:
...y ese es el motivo por el cual incluso
Microsoft prefiere utilizar
JSON.NET en sus
APIs públicas hospedadas en
GitHub xD, del mismo modo que también lo usa
Google en sus
APIs para
.NET, etc.
En fin, en la misma web también te muestran ejemplos de utilización de
JSON.NET:
Como puedes ver, no te he mostrado nada que no pudieras haber resuelto por ti mismo con una simple búsqueda en
Google como ya te mencionó el compañero @
MCKSys Argentina... intenta buscar antes de formular preguntas típicas o muy fáciles.
Saludos!
EDITO:Acabo de desarrollar esta función de uso genérico para convertir un string en formato JSON a un objeto de tipo
XElement, el cual nos facilita mucho la usabilidad en .NET:
''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Converts a JSON <see cref="String"/> to <see cref="XElement"/>.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
''' <param name="json">
''' The source JSON string.
''' </param>
'''
''' <param name="enc">
''' The character encoding that must be used to read the JSON string.
''' </param>
''' ----------------------------------------------------------------------------------------------------
''' <returns>
''' The resulting <see cref="XElement"/>.
''' </returns>
''' ----------------------------------------------------------------------------------------------------
<DebuggerStepThrough>
Public Shared Function ConvertToXElement(ByVal json As String, ByVal enc As Encoding) As XElement
Dim data As Byte() = enc.GetBytes(json)
Using ms As New MemoryStream(data)
Using xmlReader As XmlDictionaryReader =
JsonReaderWriterFactory.CreateJsonReader(ms, enc, New XmlDictionaryReaderQuotas, Nothing)
Return XElement.Load(xmlReader)
End Using
End Using
End Function
''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Converts a JSON <see cref="String"/> to <see cref="XDocument"/>.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
''' <param name="json">
''' The source JSON string.
''' </param>
'''
''' <param name="enc">
''' The character encoding that must be used to read the JSON string.
''' </param>
''' ----------------------------------------------------------------------------------------------------
''' <returns>
''' The resulting <see cref="XDocument"/>.
''' </returns>
''' ----------------------------------------------------------------------------------------------------
<DebuggerStepThrough>
Public Shared Function ConvertToXDocument(ByVal json As String, ByVal enc As Encoding) As XDocument
Return New XDocument(ConvertToXElement(json, enc))
End Function
Ejemplo de uso:
Dim json As String = <a>
{
"colorsArray":[{
"colorName":"red",
"hexValue":"#f00"
},
{
"colorName":"green",
"hexValue":"#0f0"
},
{
"colorName":"blue",
"hexValue":"#00f"
},
{
"colorName":"cyan",
"hexValue":"#0ff"
},
{
"colorName":"magenta",
"hexValue":"#f0f"
},
{
"colorName":"yellow",
"hexValue":"#ff0"
},
{
"colorName":"black",
"hexValue":"#000"
}
]
}</a>.Value
Dim xml As XElement = ConvertToXElement(json, Encoding.UTF8)
Dim firstColorName As String = xml.<colorsArray>.<item>(0).<colorName>.Value
Dim firsHexValue As String = xml.<colorsArray>.<item>(0).<hexValue>.Value
Console.WriteLine(String.Format("Color Name: {0}; Hex. Value: {1}", firstColorName, firsHexValue))
El elemento Xml resultante tras la conversión de tipos:
<root type="object">
<colorsArray type="array">
<item type="object">
<colorName type="string">red</colorName>
<hexValue type="string">#f00</hexValue>
</item>
<item type="object">
<colorName type="string">green</colorName>
<hexValue type="string">#0f0</hexValue>
</item>
<item type="object">
<colorName type="string">blue</colorName>
<hexValue type="string">#00f</hexValue>
</item>
<item type="object">
<colorName type="string">cyan</colorName>
<hexValue type="string">#0ff</hexValue>
</item>
<item type="object">
<colorName type="string">magenta</colorName>
<hexValue type="string">#f0f</hexValue>
</item>
<item type="object">
<colorName type="string">yellow</colorName>
<hexValue type="string">#ff0</hexValue>
</item>
<item type="object">
<colorName type="string">black</colorName>
<hexValue type="string">#000</hexValue>
</item>
</colorsArray>
</root>