0
でデータを交換してください。解析ネストされたJSONと私は内のデータを解析し、交換する必要がある複雑なJSONレスポンスを持つC#の
これは、1日からちょうどスニップですが、応答内のすべての日実行する必要があります。
これを解析して値を変更するにはどうすればよいですか。 変更してホストに送り返す必要があります。
{
"schedulePeriods":` [
{
"day": "Monday",
"periodType": "WakeOcc1",
"startTime": 26,
"isCancelled": false,
"heatSetpoint": 70.0,
"coolSetpoint": 75.0,
"fanMode": "Auto"
},
{
"day": "Monday",
"periodType": "LeaveUnocc1",
"startTime": 32,
"isCancelled": false,
"heatSetpoint": 65.0,
"coolSetpoint": 75.0,
"fanMode": "Auto"
},
{
"day": "Monday",
"periodType": "ReturnOcc2",
"startTime": 66,
"isCancelled": false,
"heatSetpoint": 72.0,
"coolSetpoint": 75.0,
"fanMode": "Auto"
},
{
"day": "Monday",
"periodType": "SleepUnocc2",
"startTime": 0,
"isCancelled": false,
"heatSetpoint": 65.0,
"coolSetpoint": 75.0,
"fanMode": "Auto"
},
{
"day": "Tuesday",
"periodType": "WakeOcc1",
"startTime": 26,
"isCancelled": false,
"heatSetpoint": 70.0,
"coolSetpoint": 75.0,
"fanMode": "Auto"
},
ので、私が今持っていることはこれです: `
class Day
{
public string day { get; set; }
public string periodType { get; set; }
public int startTime { get; set; }
public double heatSetpoint { get; set; }
public double coolSetpoint { get; set; }
public override string ToString()
{
return string.Format("{0}\n{1}\n{2}\n{3}\n{4}", day, periodType, startTime, heatSetpoint, coolSetpoint);
}
}
static void Main(string[] args)
{
String JSONstring = File.ReadAllText("json.json");
JObject o = JObject.Parse(JSONstring);
string day = (string)o.SelectToken("schedulePeriods[0].day");
string periodType = (string)o.SelectToken("schedulePeriods[0].periodType");
int startTime = (int)o.SelectToken("schedulePeriods[0].startTime");
double heatSetpoint = (double)o.SelectToken("schedulePeriods[0].heatSetpoint");
double coolSetpoint = (double)o.SelectToken("schedulePeriods[0].coolSetpoint");
Console.WriteLine("{0}\n{1}\n{2}\n{3}\n{4}",day,periodType,startTime,heatSetpoint,coolSetpoint);
Console.WriteLine("Change Value to:");
string answer = Console.ReadLine();
day = answer;
Console.WriteLine("new value {0}", day);
string data = JsonConvert.SerializeObject(JSONstring,Formatting.Indented);
File.WriteAllText("newfile.json", data);
Console.ReadLine();
}
私は、第一波括弧からデータを取得していないが、することができます。 私は各アレイから取得する必要があります。 また、指定されたエントリを変更し、適切なjsonフォーマットで編集したファイルを保存したい(これはまったく機能しません)。
解決済みです。 は
何らかの理由で 'Newtonsoft.Json'を使用できませんか? – BradleyDotNET
jsonのデータと一致するようにc#でモデルを作成します。 Newtonsoft.Json(既に提案されているようなもの)を使って、着信Jsonをオブジェクトに解析します。必要なものを変更してから、もう一度使用してオブジェクトをjsonに戻します。 – Chris
newtonsoftのライブラリを使用してください。 JSONスキーマと一致するモデルを作成する次に、そのモデルに対してシリアル化または逆シリアル化を行います。あなたのモデルにはデータが取り込まれ、デシリアライズされたり、モデル化されたモデルが作成され、jsonの文字列にシリアル化されます。 - 私の答えを参照してください。http://stackoverflow.com/questions/21885243/cannot-deserialize-the-current-json-array-eg-1-2-3/21885758#21885758 – Dayan