Autor
|
Tema: Desglosar un string en partes. (Leído 5,663 veces)
|
**Aincrad**
|
bueno quiero separar todo este texto en partes. pero no se como hacerlo.texto> {"error":false,"title":"Alan Walker - Diamond Heart (feat. Sophia Somajo)","duration":218,"file":"http:\/\/michaelbelgium.me\/ytconverter\/download\/sJXZ9Dok7u8.mp3"}
Quiero separarlo en partes , como cuando se lee un archivo .ini, asi > el "error": | "title": | "duration" | "file": | quiero obtener el resultado que le sigue. Por ejemplo el de error el resultado es false , es algo así como leer un .ini. gracias de antemano!!
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
El formato se conoce como JSON. Teniendo un string JSON como este (el cual he formateado para que sea legible, pero no es necesario hacerlo): Dim jsonStr As String = <json> { "error":false, "title":"Alan Walker - Diamond Heart (feat. Sophia Somajo)", "duration":218, "file":"http:\/\/michaelbelgium.me\/ytconverter\/download\/sJXZ9Dok7u8.mp3" } </json>.Value
Si quieres llevar a cabo una conversión genérica, me refiero, de uso reutilizable, entonces: New JavaScriptSerializer (). Deserialize(Of Dictionary(Of String, Object))(jsonStr )
... For Each item As KeyValuePair(Of String, Object) In dict Console.WriteLine("{0}: {1}", item.Key, item.Value.ToString()) Next item
... Console.WriteLine(CBool(dict("error"))) Console.WriteLine(CStr(dict("title"))) Console.WriteLine(CInt(dict("duration"))) Console.WriteLine(CStr(dict("file")))
Si por lo contrario quieres una solución adaptada al string JSON que has mostrado, entonces: <Serializable> Public NotInheritable Class MyType Public Property [Error] As Boolean Public Property Title As String Public Property Duration As Integer Public Property File As String Public Sub New() End Sub Public Overrides Function ToString() As String Return New JavaScriptSerializer().Serialize(Me).ToString End Function End Class
... Dim obj As MyType = New JavaScriptSerializer().Deserialize(Of MyType)(jsonStr) Console.WriteLine(obj.ToString())
PD: Para soluciones algo más sofisticadas siempre puedes utilizar la librería gratuita JSON.NET (la cual usan empresas tan profesionales como Google y Microsoft para algunas de sus APIs para .NET). Saludos.
|
|
« Última modificación: 26 Diciembre 2018, 22:22 pm por Eleкtro (sin pilas) »
|
En línea
|
|
|
|
**Aincrad**
|
Gracias de responder como siempre @Elektro, pero estoy trabajando con .net framework 4.0 , en vs 2010. El tipo 'JavaScriptSerializer' no está definido. no quiero usar ningún tipo de librería., simplemente quiero leerlo como si fuera un .txtNo es posible mejor desglosarlo todo como si se estuviera leyendo un .ini?.
|
|
« Última modificación: 26 Diciembre 2018, 22:26 pm por **Aincrad** »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Gracias de responder como siempre @Elektro, pero estoy trabajando con .net framework 4.0 , en vs 2010. Según la documentación oficial, la clase JavaScriptSerializer está disponible a partir de .NET 3.5, por lo tanto no deberías tener problema... https://docs.microsoft.com/en-us/dotnet/api/system.web.script.serialization.javascriptserializer?view=netframework-4.7.2Asegúrate de haber añadido una referencia al ensamblado con nombre ' System.Web.Extensions', e importar el esapacio de nombres ' System.Web.Script.Serialization'.
No es posible mejor desglosarlo todo como si se estuviera leyendo un .ini?. Poder se puede, pero resultaría muy tedioso. Algo muy sencillo sería partir la cadena de texto usando la coma "," como caracter delimitador, con esto obtienes un array, entonces, cada elemento del array lo volverías a partir usando esta vez el caracter ":" como delimitador, y así obtener el nombre y el valor de cada cosa (ej: {"duration", "218"}), pero esto que en principio parece muy sencillo te podría dar problemas si el campo "title" contiene cualquiera de esos dos caracteres, por lo que habría que ingeniárselas mejor, y de ahí que sea tedioso. Sería mejor usar RegEx para capturar los valores (escritos entre comillas), pero no estoy por la labor de ponerme a construir una expresión regular, pudiendo recurrir a soluciones sofisticadas como la clase JavaScriptSerializer, o la librería JSON.NET. Un saludo.
|
|
« Última modificación: 26 Diciembre 2018, 22:41 pm por Eleкtro (sin pilas) »
|
En línea
|
|
|
|
**Aincrad**
|
MOD: Imagen adaptada a lo permitido.
|
|
« Última modificación: 26 Diciembre 2018, 22:44 pm por MCKSys Argentina »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Vuelve a leer por favor: Asegúrate de haber añadido una referencia al ensamblado con nombre 'System.Web.Extensions', e importar el espacio de nombres 'System.Web.Script.Serialization'. El espacio de nombres que aparece en la imagen que has mostrado, no es el que he mencionado que debes importar. Y antes de poder importarlo, debes añadir una referencia al ensamblado que también mencioné. Acabo de compilar en .NET 4.0 el código que mostré, y funciona perfectamente. Por otro lado, la clase JavaScriptSerializer NO está disponible en .NET 4.0 Client Profile. En resumen, el código lo puedes compilar con .NET 4.0 sin problemas, pero no lo puedes compilar en .NET 4.0 Client Profile. Feliz Navidad.
|
|
|
En línea
|
|
|
|
**Aincrad**
|
Perdona mi ignorancia, estoy en .NET 4.0 pero sigue con > El tipo 'JavaScriptSerializer' no está definido.
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
¿Puedes mostrar la pestaña "Referencias" o en su defecto pasarme el proyecto?.
|
|
|
En línea
|
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
te envié el proyecto por priv,
En tu proyecto falta que añadas una referencia al ensamblado que te dije: System.Web.Extensions.dll. Una vez añadida la referencia, se puede utilizar la clase JavaScriptSerializer. Dirígete a la pestaña " Referencias" y añade la maldita librería. xD Saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Solucionado] Comparar un String con cada una de las partes de otro String
« 1 2 »
.NET (C#, VB.NET, ASP)
|
Segurida
|
13
|
12,520
|
14 Mayo 2011, 18:52 pm
por Segurida
|
|
|
como puedo hacer q mi JTextArea me imprima mas de un dato string datos string
Dudas Generales
|
alda19
|
1
|
5,683
|
15 Junio 2011, 03:18 am
por Novlucker
|
|
|
desglosar
« 1 2 »
.NET (C#, VB.NET, ASP)
|
andaluz
|
11
|
10,688
|
13 Enero 2012, 17:31 pm
por andaluz
|
|
|
Como logro desglosar la estructura de un virus...
Hacking
|
Grabaton
|
1
|
3,177
|
20 Enero 2016, 19:54 pm
por MCKSys Argentina
|
|
|
Problema al copiar string a un arreglo string dinamico VS2013 ultimate
Programación C/C++
|
raver1983
|
1
|
2,684
|
7 Febrero 2017, 01:11 am
por raver1983
|
|