2017-07-31 266 views
0

我有本地的Json文件,我想处理它。所以删除,创建 ,更改值,并getall。处理json文件csharp控制台

因此,它的json例子

[ { 
    "Alerts": { 
    "Name": "RoseDeal", 
    "Description": "Problème au sein de Rosedeal", 
    "StartDate": "2017-07-17T00:00:00", 
    "EndDate": "2008-07-19T00:00:00", 
    "Niveau": "Urgent", 
    "Type": "Girophare", 
    "Id": 1 
    } } ] 

我在控制台程序工作,只是为了尝试。

public bool DeleleAlert(int alertId) 
{     
    var filePath = @"C:\Users\korben\Documents\Visual Studio  2017\Projects\SaveFiles\SaveFiles\json\alerts.json"; 
    string Json = File.ReadAllText(filePath); 
    var alerts = JsonConvert.DeserializeObject<List<Alert>>(Json); 
    var newJsonString = JsonConvert.SerializeObject(alerts.Where(i => i.Id != alertId)); 
    return true; 
} 


public bool SaveAlert(Alert newAlert) 
{ 
    var filePath = @"C:\Users\korben\Documents\Visual Studio 2017\Projects\SaveFiles\SaveFiles\json\alerts.json"; 
    string Json = File.ReadAllText(filePath); 
    dynamic contourManifest = JObject.Parse(Json); 
    foreach (var Alerts in contourManifest.features) 
    { 
     Alerts.Name.Replace(JObject.FromObject(new { Name = Alerts.Name["SANG"] })); 
    } 

    var newJson = contourManifest.ToString(); 

// Missing a closing brace here? 

public Alert GetAlert(int alertId) 
{ 
    List<Alert> alerts; 
    // Lire le fichier JSON 
    alerts = ReadFile(); 
    // Rechercher l'alerte demandé via sont ID 
    var myAlert = alerts.Where(a => a.Id == alertId).FirstOrDefault(); 
    return myAlert; 
} 

} } // <-- ? 

public void CreateALert(List<AlertObject> alerts) 
{ 
     var filePath = @"C:\Users\korben\Documents\Visual Studio    2017\Projects\SaveFiles\SaveFiles\json\alerts.json"; 
     string json = JsonConvert.SerializeObject(alerts, Formatting.Indented); 
     File.WriteAllText(filePath, json); 
} 
} // <-- ? 

它不是我所有的代码,但只有创建,GetAlert的工作。 savealert(更改值)删除和 不起作用,我不明白为什么。 这里的程序:

static void Main(string[] args) 
{ 
     int count = 0; 
     var myAlert = new List<Alert>(); 
     var myAlertObject = new List<AlertObject>(); 
     AlertObject oAlertObject = new AlertObject(); 
     var newAlert = new Alert 
     { 
      Name = "RoseDeal", 
      Description = "Problème au sein de Rosedeal", 
      StartDate = new DateTime(2017, 7, 17), 
      EndDate = new DateTime(2008, 7, 19), 
      Niveau = "Urgent", 
      Type = "Girophare", 
      Id = ++count, 
     }; 

     oAlertObject.OAlert = newAlert; 
     myAlertObject.Add(oAlertObject); 
     Console.WriteLine("Hello World!"); 
     JsonAlert rene = new JsonAlert(); 
     rene.CreateALert(myAlertObject); 
     rene.GetAlert(1); 
     //rene.SaveAlert(newAlert); 
     rene.DeleleAlert(1); 
} 
} // <-- ? 
+0

什么是'Alert'和'AlertObject'类定义?当你说'Delete'和'SaveAlert'“不起作用”你是什么意思?你有例外吗?它什么都不做?换句话说,你期望它做什么以及它实际做了什么(或不做)呢? –

+1

我试着重新格式化你的代码,但是你的大括号不能排队。请发布[mcve]。 – nvoigt

回答

0

你能应付这样的:

public class Alert //This is each alert 
{ 
    public string Name; 
    public string Decription; 
    ... 
} 

public class Alerts //This is group of all alert 
{ 
    public List<Alert> Alert; 

    public Alerts() 
    { 
     Alert = new List<Alert>(); 
    } 
} 

public class Program 
{   
    public static Alerts LoadAlertsFromJson() //With this you can load alerts to other classes with Program.LoadAlertsFromJson(); 
    { 
     string jsonString = loadYourStringHere; 
     Alerts a = JsonUtility.FromJson<Alerts>(jsonString); 
     return a; 
    } 

    public static void AddAlert(Alert alert) 
    { 
     Alerts alerts = LoadAlertsFromJson(); 
     alerts.Add(alert); 
     SaveAlerts(alerts); 
    } 

    public static void SaveAlerts(Alerts alerts) 
    { 
     string jsonString = JsonUtility.ToJson(alerts); 
     //write this string to your file 
    } 
}