在c#中将字符串转换为json数组
本文关键字:json 数组 转换 字符串 | 更新日期: 2023-09-27 18:07:06
我是c#新手。我想把这两个字符串转换成一个JSON数组。
我尝试了以下操作:
var username = "username";
var password = "XXXXXXXX";
var json_data = "result":[{"username":username,"password":password}]'; //To convert the string to Json array i tried like this
MessageBox.Show(json_data);
它不工作,我得到很多错误。
我已经浏览了以下链接:
http://json.codeplex.com/将字符串转换为Json数组
http://www.codeproject.com/Articles/272335/JSON-Serialization-and-Deserialization-in-ASP-NET将字符串转换为json
学习如何将字符串转换为Json数组。在上面的url中很好地解释了,但对于我的情况,我不知道如何将这两个字符串转换为单个Json数组。
我希望输出像这样的格式,
[{"result":{"username":"Tom","password":"XXXXXXX"}}]
请帮我做这件事
可以使用JSON序列化器API。一个常用的是Newtonsoft的,叫做Json.NET。
这种API的任务是将c#对象转换为JSON(也称为序列化),并将JSON数据转换为c#对象(反序列化)。在你的例子中,Newtonsoft JSON API可以这样使用。
public class UserData { public string username; public string password; }
var userData = new UserData() { username = "Tom", password = "XXXXXXXX" };
UserData[] arr = new UserData[] { userData };
string json_data = JsonConvert.SerializeObject(arr); // this is the Newtonsoft API method
// json_data will contain properly formatted Json. Something like [{"result":{"username":"Tom","password":"XXXXXXX"}}]
MessageBox.Show(json_data);
请原谅我打字,因为我正在打电话。
扩展bytefire的答案,有两种方法可以实现:
-
创建一个具有所需属性的类,在您的示例中是
username
和password
。我将用Json中的JsonProperty
注释属性。. NET以便序列化器可以匹配它们,而不考虑小写/大写:public class User { [JsonProperty(PropertName = username)] public string Username { get; set; } [JsonProperty(PropertName = password)] public string Password { get; set; } }
然后,使用JsonConvert序列化对象。SerializeObject:
var user = new User { Username = "user", Password = "pass" };
var jsonUser = JsonConvert.SerializeObject(user);
使用
JsonTextWriter
从Json。. NET,你可以构造一个json而不创建对象:var stringBuilder = new StringBuilder(); var stringWriter = new StringWriter(stringBuilder); string jsonString = null; using (var jsonWriter = new JsonTextWriter(stringWriter)) { writer.Formatting = Formatting.Indented; writer.WriteStartObject(); writer.WriterPropertyName("username"); writer.WritePropertyValue("user"); writer.WriterPropertyName("password"); writer.WritePropertyValue("pass"); writer.WriteEnd(); writer.WriteEndObject(); jsonString = writer.ToString(); }
如果你认为JSON.net太大,可以选择简单的Json。
在Javascript对象表示法中,顶层总是一个对象。
在JSON中,数组不是对象,但可以是值。
你可以把语法展开成这样:
{ string : [ { string : string , string : string },{ string : string , string : string } ] }
在你的例子中可以是:
{ "allUsers": [ { "name": "Luis" , "password": "R0Cke+" }, { "name": "Janette" , "password": "BookTour2011" } ] }
这是我想到的最简单的方法。当我想解析从YelpAPI获得的JSON时,它为我工作。
- 将JSON作为类粘贴到visual studio或其他IDE中
- 请求API并在var contentJSON中获取JSON内容。
-
T在这里从是一个类的列表,你想使而值1精确字符串在JSON文件中使用。
var contentJson = await SendRequest(request);
动态响应= JsonConvert.DeserializeObject(contentJson);
List abc = response.value1.ToObject>();
注意:T和value1在JSON中是相同的,但是当我们将JSON粘贴为类时,我们在JSON树中得到T类和value1作为父值。代码: