相关疑难解决方法(0)

C#中变量名中@字符的用法/含义是什么?

我发现你可以用C#中的'@'字符开始你的变量名.在我的C#项目中,我使用的是用Java编写的Web服务(我添加了对我的项目的Web引用).WSDL中定义的一个接口对象有一个名为"params"的成员变量.显然,这是C#中的保留字,因此您不能拥有名为"params"的成员变量的类.生成的代理对象包含一个如下所示的属性:

public ArrayList @params {
    get { return this.paramsField; }
    set { this.paramsField = value; }
}
Run Code Online (Sandbox Code Playgroud)

我搜索了VS 2008 c#文档,但找不到任何相关信息.搜索谷歌也没有给我任何有用的答案.那么变量/属性名称中'@'字符的确切含义或用法是什么?

c# naming specifications

291
推荐指数
6
解决办法
4万
查看次数

JavaScriptSerializer.Deserialize - 如何更改字段名称

简介:在使用JavaScriptSerializer.Deserialize时,如何将JSON数据中的字段名称映射到.Net对象的字段名称?

更长版本:我从服务器API(未在.Net中编码)向我发送以下JSON数据

{"user_id":1234, "detail_level":"low"}
Run Code Online (Sandbox Code Playgroud)

我有以下C#对象:

[Serializable]
public class DataObject
{
    [XmlElement("user_id")]
    public int UserId { get; set; }

    [XmlElement("detail_level")]
    public DetailLevel DetailLevel { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

其中DetailLevel是一个枚举,其中"低"作为其中一个值.

此测试失败:

[TestMethod]
public void DataObjectSimpleParseTest()
{
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    DataObject dataObject = serializer.Deserialize<DataObject>(JsonData);

    Assert.IsNotNull(dataObject);
    Assert.AreEqual(DetailLevel.Low, dataObject.DetailLevel);
    Assert.AreEqual(1234, dataObject.UserId);
}
Run Code Online (Sandbox Code Playgroud)

最后两个断言失败,因为这些字段中没有数据.如果我将JSON数据更改为

 {"userid":1234, "detaillevel":"low"}
Run Code Online (Sandbox Code Playgroud)

然后它通过.但我不能改变服务器的行为,我希望客户端类在C#语言中具有良好命名的属性.我不能使用LINQ to JSON,因为我希望它在Silverlight之外工作.看起来XmlElement标签没有任何效果.我不知道我在哪里知道它们是相关的,它们可能不是.

你如何在JavaScriptSerializer中进行字段名称映射?它可以完成吗?

c# serialization parsing json javascriptserializer

72
推荐指数
6
解决办法
10万
查看次数

使用JavaScriptSerializer将实体映射到JSON

我的实体是这样的:

class Address
{
     public string Number { get; set; }
     public string Street { get; set; }
     public string City { get; set; }
     public string Country { get; set; }
}

class Person
{
     public string Name { get; set; }
     public int Age { get; set; }
     public Address PostalAddress { get; set; }
}

Person newPerson = 
    new Person()
    {
       Name = "Kushan",
       Age = 25,
       PostalAddress = 
           new Address()
           {
               Number = "No 25",
               Street …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net jquery json

8
推荐指数
2
解决办法
3683
查看次数

将属性名称有空格的 json 对象从 c# 发布到第三方 api

我正在从我的 asp.net mvc 项目调用第三方 api。该 api 需要属性名称带有空格的 json 对象。但在 C# 中,我们无法创建带有空格的属性名称。我被困住了,我该怎么办?

我尝试过使用 JsonProperty,但它不起作用。我尝试替换序列化字符串中的字符串,然后将该字符串发送到 api,但这给了我完全错误。

{
 "Single":14000,
 "Double":14500,
 "Triple":15000,
 "ExtraBed":15500,
 "ExtraChild":16000,
 "ExtraAdult":16000
}
Run Code Online (Sandbox Code Playgroud)

但我必须传递“加床”而不是 ExtraBed。

c# post serialization json deserialization

4
推荐指数
1
解决办法
1029
查看次数