C# 将键值对数组转换为Json字符串

C# 将键值对数组转换为Json字符串,c#,json,C#,Json,我有一个来自服务的对象数组,比如 [0]= { Name=Only for Testing soldTo=0039000000 city=Testing State=IN address1=Testing address2= zip=5600 country=US } 所以我可能会喜欢这个。我需要将其返回给Js,以便能够解析这些值并将其绑定到UI控件 如何

我有一个来自服务的对象数组,比如

[0]= {
        Name=Only for Testing 
        soldTo=0039000000
        city=Testing
        State=IN
        address1=Testing
        address2=
        zip=5600
        country=US
     }
所以我可能会喜欢这个。我需要将其返回给Js,以便能够解析这些值并将其绑定到UI控件


如何将此数组转换为Json字符串?

因为您有一个表示从服务返回的数据的类,如果您不介意将整个类属性返回给客户端,那么只需使用众多Json序列化程序中的一个即可。从这里开始:

如果您想减少被序列化的字段的数量,那么创建您自己的类,将服务对象转换为您自己的类,然后使用相同的技术对其进行序列化

下面是Json.Net文档,展示了如何序列化

更新:显示转换和序列化

注意:使用ServiceStack序列化程序

//从服务获取数据
var serviceData=新列表
{
新服务对象{name=“one”,soldTo=“00000123”,city=“sydney”,state=“nsw”,addressLine1=“king st”,addressLine2=“”,zip=“0123”,country=“australia”},
新服务对象{name=“two”,soldTo=“00000456”,city=“墨尔本”,state=“维克”,addressLine1=“威廉街”,addressLine2=”,zip=“0456”,country=“澳大利亚”},
新服务对象{name=“three”,soldTo=“00000789”,city=“adelaide”,state=“sa”,addressLine1=“county cres”,addressLine2=“”,zip=“0789”,country=“australia”}
};
//将其转换为您想要返回的内容
var jsData=(来自serviceData中的行
选择新的JsObject
{
name=row.name,
soldTo=行。soldTo,
地址=新地址
{
line1=行地址line1,
line2=行地址line2,
邮编=row.zip,
state=row.state,
国家
}
}).ToList();
//将其转换为json字符串
var json=JsonSerializer.SerializeToString(jsData);
//这将在使用Linqpad时显示结果
json.Dump(“json”);
}
类服务对象
{
公共字符串名称{get;set;}
公共字符串soldTo{get;set;}
公共字符串city{get;set;}
公共字符串状态{get;set;}
公共字符串addressLine1{get;set;}
公共字符串addressLine2{get;set;}
公共字符串zip{get;set;}
公共字符串国家{get;set;}
}
类JsObject
{
公共字符串名称{get;set;}
公共字符串soldTo{get;set;}
公共地址{get;set;}
}
类JsAddress
{
公共字符串line1{get;set;}
公共字符串第2行{get;set;}
公共字符串状态{get;set;}
公共字符串邮政编码{get;set;}
公共字符串国家{get;set;}

干杯,Aaron

因为您有一个表示从服务返回的数据的类,如果您不介意将整个类属性返回给客户端,那么只需使用众多json序列化程序中的一个即可。从这里开始:

如果您想减少被序列化的字段的数量,那么创建您自己的类,将服务对象转换为您自己的类,然后使用相同的技术对其进行序列化

下面是Json.Net文档,展示了如何序列化

更新:显示转换和序列化

注意:使用ServiceStack序列化程序

//从服务获取数据
var serviceData=新列表
{
新服务对象{name=“one”,soldTo=“00000123”,city=“sydney”,state=“nsw”,addressLine1=“king st”,addressLine2=“”,zip=“0123”,country=“australia”},
新服务对象{name=“two”,soldTo=“00000456”,city=“墨尔本”,state=“维克”,addressLine1=“威廉街”,addressLine2=”,zip=“0456”,country=“澳大利亚”},
新服务对象{name=“three”,soldTo=“00000789”,city=“adelaide”,state=“sa”,addressLine1=“county cres”,addressLine2=“”,zip=“0789”,country=“australia”}
};
//将其转换为您想要返回的内容
var jsData=(来自serviceData中的行
选择新的JsObject
{
name=row.name,
soldTo=行。soldTo,
地址=新地址
{
line1=行地址line1,
line2=行地址line2,
邮编=row.zip,
state=row.state,
国家
}
}).ToList();
//将其转换为json字符串
var json=JsonSerializer.SerializeToString(jsData);
//这将在使用Linqpad时显示结果
json.Dump(“json”);
}
类服务对象
{
公共字符串名称{get;set;}
公共字符串soldTo{get;set;}
公共字符串city{get;set;}
公共字符串状态{get;set;}
公共字符串addressLine1{get;set;}
公共字符串addressLine2{get;set;}
公共字符串zip{get;set;}
公共字符串国家{get;set;}
}
类JsObject
{
公共字符串名称{get;set;}
公共字符串soldTo{get;set;}
公共地址{get;set;}
}
类JsAddress
{
公共字符串line1{get;set;}
公共字符串第2行{get;set;}
公共字符串状态{get;set;}
公共字符串邮政编码{get;set;}
公共字符串国家{get;set;}

干杯,Aaron

你做过任何研究吗?你使用了什么具体的服务器端技术?我编辑了你的标题。请看“”,其中的共识是“不,他们不应该”。你做过任何研究吗?你使用了什么具体的服务器端技术?我编辑了你的标题。请看“”,共识在哪里“不,他们不应该”。
// get data from the service
var serviceData = new List<ServiceObject>
{
    new ServiceObject { name = "one", soldTo = "00000123", city = "sydney", state = "nsw", addressLine1 = "king st", addressLine2 = "", zip = "0123", country = "australia" },
    new ServiceObject { name = "two", soldTo = "00000456", city = "melbourne", state = "vic", addressLine1 = "william st", addressLine2 = "", zip = "0456", country = "australia" },
    new ServiceObject { name = "three", soldTo = "00000789", city = "adelaide", state = "sa", addressLine1 = "county cres", addressLine2 = "", zip = "0789", country = "australia" }
};

// convert it to what you want to return
var jsData = (from row in serviceData
              select new JsObject
              {
                  name = row.name,
                  soldTo = row.soldTo,
                  address = new JsAddress
                  {
                      line1 = row.addressLine1,
                      line2 = row.addressLine2,
                      postCode = row.zip,
                      state = row.state,
                      country = row.country
                  }
              }).ToList();

// turn it into a json string
var json = JsonSerializer.SerializeToString(jsData);

// this will spit out the result when using Linqpad
json.Dump("json");

}

class ServiceObject
{
    public string name { get; set; }
    public string soldTo { get; set; }
    public string city { get; set; }
    public string state { get; set; }
    public string addressLine1 { get; set; }
    public string addressLine2 { get; set; }
    public string zip { get; set; }
    public string country { get; set; }
}

class JsObject
{
    public string name { get; set; }
    public string soldTo { get; set; }
    public JsAddress address { get; set; }
}

class JsAddress
{
    public string line1 { get; set; }
    public string line2 { get; set; }
    public string state { get; set; }
    public string postCode { get; set; }
    public string country { get; set; }