手动创建 JSON
Create JSON manually
我有一个 JSON,例如,它看起来像这样:
{
"value":[
{
"Name":"Nik",
"Age":"17",
"Country":"Germany",
},
{
"Name":"Tom",
"Age":"20",
"Country":"Russia",
},
{
"Name":"Sila",
"Age":"12",
"Country":"Switzerland",
}
]
}
“姓名”和“年龄”等属性的键是动态的,可以变化。 JSON 也可以是这样的:
{
"value":[
{
"Prename":"Nik",
"Age":"17",
"Country":"Germany"
"Car":"Merc"
},
{
"Prename":"Nik",
"Age":"20",
"Country":"Russia"
"Car":"BMW"
},
{
"Prename":"Nik",
"Age":"12",
"Country":"Switzerland",
"Car":"Audi"
}
]
}
重要的是结构,这是我想用 Newtonsoft.Json
手动构建的。
这是我目前的尝试:
var jArray = new JArray();
jArray.Add("Name");
jArray.Add("Nikola");
jArray.Add("Age");
jArray.Add("17");
jArray.Add("Country");
jArray.Add("Germany");
JObject o = new JObject();
o["Value"] = jArray;
string json = o.ToString();
结果:
{
"Value": [
"Name",
"Nikola",
"Age",
"17",
"Country",
"Germany"
]
}
我尝试使用 newtonsoft 网站上的 this example 来解决它,但如您所见,它的解释非常糟糕。
如果您想动态构造对象,可以使用字典:
var jsonObj = new Dictionary<string, List<Dictionary<string, string>>>
{
{
"Value", new List<Dictionary<string, string>>
{
new Dictionary<string, string>
{
{"Prename", "Nik"},
{"Age", "17"},
{"Country", "Germany"},
{"Car", "Merc"}
},
new Dictionary<string, string>
{
{"Prename", "Nik"},
{"Age", "20"},
{"Country", "Russia"},
{"Car", "BMW"}
},
new Dictionary<string, string>
{
{"Prename", "Nik"},
{"Age", "12"},
{"Country", "Switzerland"},
{"Car", "Audi"}
}
}
}
};
var json = JsonConvert.SerializeObject(jsonObj);
Console.WriteLine(json);
您可以考虑从匿名对象创建它,如下所示:
JObject o = JObject.FromObject(new
{
value = new [] {
new {
Name = "Nik",
Age = "17",
Country = "Germany"
},
new {
Name = "Nik1",
Age = "18",
Country = "Austria"
},
}
});
string json = o.ToString();
它产生这个结果:
{
"value": [
{
"Name": "Nik",
"Age": "17",
"Country": "Germany"
},
{
"Name": "Nik1",
"Age": "18",
"Country": "Austria"
}
]
}
您需要像这样将 JObject
添加到数组中。我想你将不得不添加你想要的任何条件属性(或其他嵌套对象)
var jArray = new JArray();
var nik = new JObject();
nik["Name"] = "nik";
nik["Age"] = "17";
nik["Country"] ="Germany";
jArray.Add(nik);
JObject o = new JObject();
o["Value"] = jArray;
string json = o.ToString();
根据动态内容的确切性质,您可以使用像
这样的初始化代码
var jArray = new JArray
{
new JObject {["Name"] = "nik", ["Age"] = "17", ["Country"] = "Germany"},
new JObject {["Name"] = "bob", ["Age"] = "32", ["Country"] = "New Zealand"}
};
var o = new JObject {["Value"] = jArray};
我相信您要实现的确切结构是:
//New Json Array
var manualJSON = new JArray();
//Add Nik
var NIK = new JObject();
NIK["Name"] = "Nik";
NIK["Age"] = "17";
NIK["Country"] = "Germany";
//Add Tom
var Tom = new JObject();
Tom["Name"] = "Tom";
Tom["Age"] = "20";
Tom["Country"] = "Russia";
//Add People to Json Array
manualJSON.Add(Tom);
manualJSON.Add(NIK);
//Pass your json to a new object to print
JObject o = new JObject();
o["value"] = manualJSON;
//Live Testing
string json = o.ToString();
File.WriteAllText("test.txt", json);
Process.Start("test.txt");
我有一个 JSON,例如,它看起来像这样:
{
"value":[
{
"Name":"Nik",
"Age":"17",
"Country":"Germany",
},
{
"Name":"Tom",
"Age":"20",
"Country":"Russia",
},
{
"Name":"Sila",
"Age":"12",
"Country":"Switzerland",
}
]
}
“姓名”和“年龄”等属性的键是动态的,可以变化。 JSON 也可以是这样的:
{
"value":[
{
"Prename":"Nik",
"Age":"17",
"Country":"Germany"
"Car":"Merc"
},
{
"Prename":"Nik",
"Age":"20",
"Country":"Russia"
"Car":"BMW"
},
{
"Prename":"Nik",
"Age":"12",
"Country":"Switzerland",
"Car":"Audi"
}
]
}
重要的是结构,这是我想用 Newtonsoft.Json
手动构建的。
这是我目前的尝试:
var jArray = new JArray();
jArray.Add("Name");
jArray.Add("Nikola");
jArray.Add("Age");
jArray.Add("17");
jArray.Add("Country");
jArray.Add("Germany");
JObject o = new JObject();
o["Value"] = jArray;
string json = o.ToString();
结果:
{
"Value": [
"Name",
"Nikola",
"Age",
"17",
"Country",
"Germany"
]
}
我尝试使用 newtonsoft 网站上的 this example 来解决它,但如您所见,它的解释非常糟糕。
如果您想动态构造对象,可以使用字典:
var jsonObj = new Dictionary<string, List<Dictionary<string, string>>>
{
{
"Value", new List<Dictionary<string, string>>
{
new Dictionary<string, string>
{
{"Prename", "Nik"},
{"Age", "17"},
{"Country", "Germany"},
{"Car", "Merc"}
},
new Dictionary<string, string>
{
{"Prename", "Nik"},
{"Age", "20"},
{"Country", "Russia"},
{"Car", "BMW"}
},
new Dictionary<string, string>
{
{"Prename", "Nik"},
{"Age", "12"},
{"Country", "Switzerland"},
{"Car", "Audi"}
}
}
}
};
var json = JsonConvert.SerializeObject(jsonObj);
Console.WriteLine(json);
您可以考虑从匿名对象创建它,如下所示:
JObject o = JObject.FromObject(new
{
value = new [] {
new {
Name = "Nik",
Age = "17",
Country = "Germany"
},
new {
Name = "Nik1",
Age = "18",
Country = "Austria"
},
}
});
string json = o.ToString();
它产生这个结果:
{
"value": [
{
"Name": "Nik",
"Age": "17",
"Country": "Germany"
},
{
"Name": "Nik1",
"Age": "18",
"Country": "Austria"
}
]
}
您需要像这样将 JObject
添加到数组中。我想你将不得不添加你想要的任何条件属性(或其他嵌套对象)
var jArray = new JArray();
var nik = new JObject();
nik["Name"] = "nik";
nik["Age"] = "17";
nik["Country"] ="Germany";
jArray.Add(nik);
JObject o = new JObject();
o["Value"] = jArray;
string json = o.ToString();
根据动态内容的确切性质,您可以使用像
这样的初始化代码 var jArray = new JArray
{
new JObject {["Name"] = "nik", ["Age"] = "17", ["Country"] = "Germany"},
new JObject {["Name"] = "bob", ["Age"] = "32", ["Country"] = "New Zealand"}
};
var o = new JObject {["Value"] = jArray};
我相信您要实现的确切结构是:
//New Json Array
var manualJSON = new JArray();
//Add Nik
var NIK = new JObject();
NIK["Name"] = "Nik";
NIK["Age"] = "17";
NIK["Country"] = "Germany";
//Add Tom
var Tom = new JObject();
Tom["Name"] = "Tom";
Tom["Age"] = "20";
Tom["Country"] = "Russia";
//Add People to Json Array
manualJSON.Add(Tom);
manualJSON.Add(NIK);
//Pass your json to a new object to print
JObject o = new JObject();
o["value"] = manualJSON;
//Live Testing
string json = o.ToString();
File.WriteAllText("test.txt", json);
Process.Start("test.txt");