小编Bri*_*ers的帖子

C# - 我试图理解我反映的Microsoft的DoubleUtil.AreClose()代码

如果您反思过来,WindowsBase.dll > MS.Internal.DoubleUtil.AreClose(...)您将获得以下代码:

public static bool AreClose(double value1, double value2)
{
    if (value1 == value2)
    {
        return true;
    }
    double num2 = ((Math.Abs(value1) + Math.Abs(value2)) + 10.0) * 2.2204460492503131E-16;
    double num = value1 - value2;
    return ((-num2 < num) && (num2 > num));
}
Run Code Online (Sandbox Code Playgroud)

我试图理解两件不同的事情:

  1. 他们在哪里提出了num2的公式?我想我只是不明白第一次添加值的重要性,10.0其次将所有结果乘以这个数字2.2204460492503131E-16.任何人都知道为什么这是使用的公式?

  2. 那里的退货声明有什么意义?似乎默认情况下,如果num2大于num而不是num2的否定值,则应小于num.也许我在这里遗漏了一些东西,但这似乎是多余的.对我而言,就像检查5是否大于3以及-5是否小于3(作为示例).

c# double compare internals

13
推荐指数
1
解决办法
1360
查看次数

从类中获取要在查询字符串中使用的JSON属性名称列表

如果我有一个CSON模型类,JSON.net使用它来绑定序列化JSON字符串中的数据,有没有办法可以从该类创建一个查询字符串以便发出初始请求?

模型类示例:

public class model
{
   [JsonProperty(PropertyName = "id")]
   public long ID { get; set; }
   [JsonProperty(PropertyName = "some_string")]
   public string SomeString {get; set;} 
}
Run Code Online (Sandbox Code Playgroud)

查询字符串示例:

baseUrl + uri + "&fields=id,some_string" + token
Run Code Online (Sandbox Code Playgroud)

所以我想要做的就是从模型对象中收集"id"和"some_string",这样我就可以动态地创建一个"&fields"参数.谢谢!

c# json json.net .net-3.5 query-string

13
推荐指数
3
解决办法
1万
查看次数

如何使用json.net将json数组添加到JObject的属性中

我很难搞清楚如何将json对象数组添加到现有数据库中JObject.假设我JObject只有"已修改"属性,并且我想添加另一个属性"IntersectGroups",其中包含一个json对象数组,我该怎么做?我有一个JObject[]当我序列化它是完全符合我要求的格式,但我正在寻找这样的东西:mainJObject.Add("IntersectGroups", myJObjectArray)

这是我序列化时想要的最终json的一个例子.

...
"Modified": "2012-11-26T10:21:04.693",
"IntersectGroups": [
  {
    "Id": 1004,
    "UserId": 20003,
    "GroupId": 1001,
    "Admin": false,
    "Expires": "1900-01-01T00:00:00"
  },
  {
    "Id": 1003,
    "UserId": 20003,
    "GroupId": 1000,
    "Admin": false,
    "Expires": "1900-01-01T00:00:00"
  }
]
...
Run Code Online (Sandbox Code Playgroud)

UPDATE

我的最终解决方案是使用JArray对象.JArray是一个JContainer,它是一个JToken,可以添加到JObject中.我的问题是我试图使用JObject [],这不是一个有效的JToken

c# serialization json json.net deserialization

12
推荐指数
1
解决办法
2万
查看次数

无法反序列化当前的JSON数组(例如[1,2,3])

我正在尝试阅读我的JSON结果.

这是我的RootObject

public class RootObject
{
public int id { get; set; }
public bool is_default { get; set; }
public string name { get; set; }
public int quantity { get; set; }
public string stock { get; set; }
public string unit_cost { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我的JSON结果

[{"id": 3636, "is_default": true, "name": "Unit", "quantity": 1, "stock": "100000.00", "unit_cost": "0"}, {"id": 4592, "is_default": false, "name": "Bundle", "quantity": 5, "stock": "100000.00", "unit_cost": "0"}]
Run Code Online (Sandbox Code Playgroud)

这是我读取结果的代码

     public static RootObject GetItems(string user, …
Run Code Online (Sandbox Code Playgroud)

c# arrays serialization json json.net

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

无法使用Json.NET对具有多个构造函数的类进行反序列化

我有一个我不用多个构造函数控制的类型,相当于这个:

    public class MyClass
    {
        private readonly string _property;

        private MyClass()
        {
            Console.WriteLine("We don't want this one to be called.");
        }

        public MyClass(string property)
        {
            _property = property;
        }

        public MyClass(object obj) : this(obj.ToString()) {}

        public string Property
        {
            get { return _property; }
        }

    }
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试反序列化它时,将调用私有无参数构造函数,并且永远不会设置该属性.考试:

    [Test]
    public void MyClassSerializes()
    {
        MyClass expected = new MyClass("test");
        string output = JsonConvert.SerializeObject(expected);
        MyClass actual = JsonConvert.DeserializeObject<MyClass>(output);
        Assert.AreEqual(expected.Property, actual.Property);
    }
Run Code Online (Sandbox Code Playgroud)

给出以下输出:

We don't want this one to be called.

  Expected: "test"
  But …
Run Code Online (Sandbox Code Playgroud)

.net c# json json.net

12
推荐指数
1
解决办法
7046
查看次数

如何让json.net序列化从List <T>派生的类的成员?

我创建了一个PagedResult<T> : List<T>包含一些添加成员的类,以便使用我们的一个组件.但是,当我运行json反序列化器时,它只序列化列表.如果我的标记与派生类[JsonObject][JsonProperty]然后它只会序列化派生类的成员,而不是名单.我如何得到两者?

c# serialization json.net

10
推荐指数
1
解决办法
1324
查看次数

使用json.net对对象属性进行条件序列化/反序列化

我有一个类定义如下的场景:

class MyObject
{
    public DataDictionary MyObjectData { get; set; }

    public bool ShouldSerializeMyObjectData() { return true; }
    public bool ShouldDeserializeMyObjectData() { return false; }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用JSON.net序列化/反序列化该类时,它会考虑ShouldSerialize,但不会考虑ShouldDeserialize.

根据文档,两者都应该像我猜的那样工作.有什么特别值得我知道的吗?更一般地说,我应该如何处理我想要序列化属性但不反序列化它的场景?

我正在使用,Json.NET 8.0如果这很重要.

谢谢你的帮助.

c# json.net

10
推荐指数
1
解决办法
6387
查看次数

如何使Json.Net跳过空集合的序列化

我有一个对象,其中包含几个属性,这些属性是字符串列表List<String>或字符串字典Dictionary<string,string>.我想使用Json.net将对象序列化为json,我希望生成最少量的文本.

我使用DefaultValueHandling和NullValueHandling将默认值设置为字符串和整数.但是,如果将DefaultValueHandling初始化为空List<String>Dictionary<string,string>?,则如何定义DefaultValueHandling以忽略序列化输出中的属性?

一些示例输出是:

{
 "Value1": "my value",
 "Value2": 3,
 "List1": [],
 "List2": []
}
Run Code Online (Sandbox Code Playgroud)

我想得到一个忽略上例中两个列表的结果,因为它们被设置为空列表的默认值.

任何帮助将不胜感激

c# asp.net serialization json.net

9
推荐指数
2
解决办法
7637
查看次数

如何在PhantomJS + Selenium中隐藏控制台?

我在我的应用程序中使用PhantomJS + Selenium.当我初始化PhantomJS时,屏幕上会弹出一个控制台.我想在弹出之前隐藏这个控制台.我找了一个答案,我发现了这个:

 var service = PhantomJSDriverService.CreateDefaultService(Environment.CurrentDirectory);
            service.WebSecurity = false;
            service.HideCommandPromptWindow = true;
            var driver = new PhantomJSDriver(service);
Run Code Online (Sandbox Code Playgroud)

上面的代码隐藏了控制台,但问题是当控制台被隐藏时,我的Windows应用程序失去了焦点.因此,它在PhantomJS控制台工作时停止工作.我需要隐藏控制台并让我的应用程序同时使用PhantomJS.

有谁知道我该怎么做?

c# console selenium phantomjs

9
推荐指数
1
解决办法
6390
查看次数

将JSON反序列化为对象

我有一些JSON:

{
    "foo" : [ 
        { "bar" : "baz" },
        { "bar" : "qux" }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想将其反序列化为一个集合.我已经定义了这个类:

public class Foo
{
    public string bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是,以下代码不起作用:

 JsonConvert.DeserializeObject<List<Foo>>(jsonString);
Run Code Online (Sandbox Code Playgroud)

如何反序列化我的JSON?

c# json json.net

9
推荐指数
1
解决办法
1万
查看次数