Después de de una larga compilación de información pudimos resolver esta dificultad que suelen tener muchos los lectores. Te compartimos la solución y esperamos resultarte de mucha ayuda.
Solución:
Necesita ejecutar esto a través de JavaScript. Inicie un analizador de JavaScript en .red. Dar el string como entrada a JavaScript y usar JavaScript nativo JSON.stringify
para convertir:
obj =
"user":'180111',
"title":'I'm sure "E pluribus unum" means 'Out of Many, One.' nnhttp://en.wikipedia.org/wiki/E_pluribus_unum.nn',
"date":'2007/01/10 19:48:38',
"id":"3322121",
"previd":"112211",
"body":"'You' can "read" more here [url=http://en.wikipedia.org/?search=E_pluribus_unum]E pluribus unum[/url]'s. Cheers \*/ :/",
"from":"112221",
"username":"mikethunder",
"creationdate":"2007/01/10 14:04:49"
console.log(JSON.stringify(obj));
document.write(JSON.stringify(obj));
Por favor, recuerde que el string (o más bien el objeto) que tiene no es JSON válido y no se puede analizar con una biblioteca JSON. Primero debe convertirse a JSON válido. Sin embargo, es JavaScript válido.
Para completar esta respuesta: Puedes usar JavaScriptSerializer
en .Red. Para esta solución, necesitará los siguientes ensamblajes:
- Sistema.Net
-
Sistema.Web.Script.Serialización
var webClient = new WebClient(); string readHtml = webClient.DownloadString("uri to your source (extraterrestrial)"); var a = new JavaScriptSerializer(); Dictionary
results = a.Deserialize >(readHtml);
Qué tal esto:
string AlienJSON = "your alien JSON";
JavaScriptSerializer js = new JavaScriptSerializer();
string ProperJSON = js.Serialize(js.DeserializeObject(AlienJSON));
O simplemente consuma el objeto después de deserializarlo en lugar de convertirlo de nuevo a string y pasándolo a un analizador JSON para un dolor de cabeza adicional
Como Mouser también mencionó, debe usar System.Web.Script.Serialization, que está disponible al incluir system.web.extensions.dll en su proyecto y, para hacerlo, debe cambiar el marco de destino en las propiedades del proyecto para .NET Framework 4
.
EDITAR
Truco para consumir objeto deserializado está usando dynamic
JavaScriptSerializer js = new JavaScriptSerializer();
dynamic obj = js.DeserializeObject(AlienJSON);
para JSON en su pregunta simplemente use
string body = obj["body"];
o si su JSON es un array
if (obj is Array)
foreach(dynamic o in obj)
string body = obj[0]["body"];
// ... do something with it