Soy nuevo en c# y objetos json y estoy tratando de mover mi sitio web de xml basado en los archivos de configuración para json base. Es allí una manera a la carga en una .archivo json en lo que se convierte en el objeto? He estado buscando en la web y no puedo encontrar uno. Ya tengo el archivo xml convertir y guardar como .json. Prefiero no usar una 3ra parte de la biblioteca.

  • Posibles duplicados? Consulte stackoverflow.com/questions/4521239/…
  • I have been searching the web and I cannot find one difícil de creer…
  • bueno, he encontrado algunas de este tipo de cosas, pero traté de sus soluciones y no estaba funcionando. Haciendo algunos progresos ahora
  • Posibles duplicados de Leer y analizar un Archivo Json en C#
  • json.net es el universalmente utilizado c# json biblioteca
InformationsquelleAutor ford prefect | 2013-08-30

5 Comentarios

  1. 57

    Que realmente debe utilizar un fundó la biblioteca, tales como Newtonsoft.Json (que incluso Microsoft utiliza para marcos como MVC y WebAPI), o .RED integrada de JavascriptSerializer.

    He aquí una muestra de leer JSON utilizando Newtonsoft.Json:

    JObject o1 = JObject.Parse(File.ReadAllText(@"c:\videogames.json"));
    
    //read JSON directly from a file
    using (StreamReader file = File.OpenText(@"c:\videogames.json"))
    using (JsonTextReader reader = new JsonTextReader(file))
    {
      JObject o2 = (JObject) JToken.ReadFrom(reader);
    }
    • Bueno…obviuosly el OP no escribir su propia. Pero si quiere un marco de trabajo de la clase que implementa esta funcionalidad, JavaScriptSerializer funcionaría.
    • Me había descargado NewtonSoft, pero no quiero a alguien gritar a mí para uso fuera de la biblioteca
    • No entendí y pensé que la intención de escribir su propio. El construido en el JavascriptSerializer es decente para la mayoría de los casos de uso, pero Newtonsoft es muy rápida y completa.
    • Sí, gracias a usarlo ahora
    • Yo prefiero Newtonsoft de la aplicación a cualquier otro. A punto de que no soy un fan de la utilización de su código de ejemplo. ¿Por qué tratar este dinámicamente cuando se puede utilizar el más simple, más limpio, más seguro del tipo de Deserialize<T>(string rawJson) método? También, usted puede utilizar File.ReadAllText(string filepath) para simplificar el archivo IO.
    • Buen punto, me agarró de la muestra directamente de la doc en «cómo leer un archivo JSON desde el disco».
    • Por lo que he visto, las personas son más propensos a gritar tratando de rodar su propia cuenta, pero para cosas específicas, la mayoría de los analizadores como JSON o HTML, pero el cifrado también se menciona a menudo.

  2. 8

    Otra buena manera para serializar json en c# es el siguiente:

    RootObject ro = new RootObject();
         try
        {
    
            StreamReader sr = new StreamReader(FileLoc);
            string jsonString = sr.ReadToEnd();
            JavaScriptSerializer ser = new JavaScriptSerializer();
            ro = ser.Deserialize<RootObject>(jsonString);
    
    
       }

    usted necesita para agregar una referencia a system.web.extensiones en .net 4.0 esta es en archivos de programa (x86) > referencia asambleas> marco> system.web.extensions.dll y usted necesita estar seguro de que usted está usando sólo regular marco 4.0 4.0 no cliente

    • no olvide sr.Close();
    • Donde puedo conseguir RootObject de? He intentado que incluye el Sistema.Xaml
  3. 6

    Como se mencionó en la otra respuesta me gustaría recomendar el uso de json.NET. Puede descargar el paquete usando NuGet. A continuación, para deserializar su json archivos en C# los objetos que usted puede hacer algo como;

       JsonSerializer serializer = new JsonSerializer();
       MyObject obj = serializer.Deserialize<MyObject>(File.ReadAllText(@".\path\to\json\config\file.json");

    El código de arriba se supone que tiene algo así como

    public class MyObject
    {
        public string prop1 { get; set; };
        public string prop2 { get; set; };
    }

    Y su json parece;

    {
          "prop1":"value1",
          "prop2":"value2"
    }

    Yo prefiero usar el genérico deserializar método deserialize json en un objeto suponiendo que usted proporciona con un tipo que la definición que coincide con el json del. Si hay discrepancias entre los dos podría tirar o no los valores de ajuste, o simplemente ignorar las cosas en el json, depende de cuál es el problema. Si el json definición coincide exactamente con el de C# los tipos de definición, a continuación, simplemente funciona.

    • falta de cierre ) paren en la segunda línea.
    • No había Deserialize método de tomar una string, cuando traté de construir.
  4. 1

    Ver Microsoft JavaScriptSerializer

    La JavaScriptSerializer clase es utilizado internamente por el asincrónica
    capa de comunicación para serializar y deserializar los datos que se
    pasa entre el navegador y el servidor Web. Usted puede tener acceso a ese
    instancia de la serializador. Sin embargo, esta clase expone una API pública.
    Por lo tanto, puede utilizar la clase cuando se quiere trabajar con JavaScript
    Object Notation (JSON) en código administrado.

    Espacio De Nombres: Sistema.Web.Secuencia de comandos.La serialización

    Asamblea: Sistema.Web.Extensiones (en System.Web.Extensions.dll)

  5. 1

    Uso Del Servidor.MapPath para obtener la ruta de acceso del archivo JSON y cargar y leer el archivo con StreamReader

    using System;
    using System.Collections.Generic;
    using Newtonsoft.Json;
    
    public class RootObject
    {
        public string url_short { get; set; }
        public string url_long { get; set; }
        public int type { get; set; }
    }
    
    public class Program
    {
        static public void Main()
        {
           using (StreamReader r = new StreamReader(Server.MapPath("~/test.json")))
           {
               string json = r.ReadToEnd();
               List<RootObject> ro = JsonConvert.DeserializeObject<List<RootObject>>(json);
           }
    
        Console.WriteLine(ro[0].url_short);                 
        }  
    }

    Nota : Mirar abajo enlace también he contestado a la pregunta similar a esta.Será de ayuda completa para usted
    Cómo Analizar un ejemplo de cadena en C#

    • Sistema de importación.IO. Su código no construir.

Dejar respuesta

Please enter your comment!
Please enter your name here