2015-04-13 4 views
-6

Может ли кто-нибудь сказать мне, как я могу добавить нового ученика? Я начал учиться работать с json. Я попытался прочитать, удалить или переименовать что-нибудь в json. Он хорошо работает, но у меня есть проблемы с добавить новый студент ..:C# Добавить товар в JSON

 StreamReader input = new StreamReader("student.txt"); 
     string kontext = input.ReadToEnd(); 
     input.Close(); 

     JSONNode j = JSONNode.Parse(kontext); 

     Console.WriteLine("ID: "); 
     string c = "\"" + Console.ReadLine() + "\""; 

     //write to console name and surname by id 
     int n = j["student"].Count; 
     for (int i = 0; i < n; i++) 
     { 
      string temp = j["student"][i][0].ToString(""); 
      if(c == temp) 
      { 
       Console.WriteLine(j["student"][i]["name"]); 
       Console.WriteLine(j["student"][i]["surname"]); 
      } 
     } 

     //rename by id + save to json 
      Console.WriteLine("ID: "); 
      c = "\"" + Console.ReadLine() + "\""; 
      for (int i = 0; i < j["student"].Count; i++) 
      { 
       string temp = j["student"][i][0].ToString(""); 
       if (c == temp) 
       { 
        Console.Write("New name: "); 
        string rename = Console.ReadLine(); 
        j["student"][i]["meno"] = rename; 

        StreamWriter output = new StreamWriter("student.txt"); 
        output.WriteLine(j.ToString("")); 
        output.Close(); 
        Console.WriteLine(j["student"][i]["meno"]); 

       } 
      } 

     //remove by id 
      Console.WriteLine("ID: "); 
      c = "\"" + Console.ReadLine() + "\""; 
      for (int i = 0; i < j["student"].Count; i++) 
      { 
       string temp = j["student"][i][0].ToString(""); 
       if (c == temp) 
       { 
        j["student"].Remove(i); 
        StreamWriter output = new StreamWriter("student.txt"); 
        output.WriteLine(j.ToString("")); 
        output.Close(); 

       } 
      } 

     //add new student 

     Console.ReadKey(); 
    } 

Вот мой ответ enter image description here

+1

может добавить ваш json в качестве кода, а не как изображение? – stefankmitph

+3

похоже, что вы пытаетесь сделать домашнее задание. Можете ли вы сказать, что вы пробовали? –

+1

почему бы вам не моделировать свои данные с помощью реальных объектов C# и сериализовать/десериализовать их с помощью чего-то вроде Newtonsoft Json.net http://www.newtonsoft.com/json? – PierrOz

ответ

0

так что после ваших советов я сделал что-то вроде этого:

 List<student> data = new List<student>(); 

     student std; 
     using (StreamReader output = File.OpenText("student.txt")) 
     { 
      JsonSerializer serializer = new JsonSerializer(); 
      std = (student)serializer.Deserialize(output, typeof(student)); 
     } 
     data.Add(std); 

     data.Add(new student() 
     { 
      id = "25628", 
      name = "Marko", 
      surname = "Polo", 
      adress = "Prague", 
      date = "15.1.1998", 
      place = "Munchen" 

     }); 

     string json = JsonConvert.SerializeObject(data.ToArray()); 

     System.IO.File.WriteAllText("student.txt", json); 

class student 
{ 
    public string id {get;set;} 
    public string name {get;set;} 
    public string surname {get;set;} 
    public string adress {get;set;} 
    public string date {get;set;} 
    public string place{get;set;} 
} 

и вот мой код json:

[{"id": "54865", "name": "Pavol", "surname": "Masny", "adress": "Blava", "date": " 12.1.1990 "," место ":" Кошице "}]

но theres Exception: Дополнительная информация: Невозможно десериализовать текущий массив JSON (например, [1,2,3]) в тип «testjson.student», потому что для десериализации правильно требуется объект JSON (например, {«name»: «value»}). Любые советы, как это исправить?