繁体   English   中英

如何转换 javascript var obj = {}; 到 C#?

[英]How can I convert javascript var obj = {}; to C#?

我有以下 javascript 代码:

var key = "Mykey" + NextNumber.toString();
var value = {"Name":"Tony","Width":"150","Height":"320"};
var valuejson = JSON.stringify(value);
var obj = {};
obj[key] = valuejson

我知道如何在 C# 中创建 valuejson,但我不知道如何创建类似 var obj = {}; 的东西。 在 C# 中。 我怎样才能在 C# 中做到这一点?

C# 中的 key 和 valuejson:

 public class MyValue
 {
     public string Name { get; set; }
     public string Width { get; set; }
     public string Height { get; set; }
 }

 MyValue value = new MyValue();
 value.Name = "Tony";
 value.Width = "150";
 value.Height = "320";
 string jsonValue = JsonConvert.SerializeObject(value);
 string key = "Mykey" + NextNumber.toString(); 

如果您正在寻找可以在运行时动态添加和删除成员的对象(如在 Javascript 中),那么ExpandoObject 类应该适合您的需要。

dynamic employee = new ExpandoObject();
employee.Name = "John Smith";
employee.Age = 33;

foreach (var property in (IDictionary<String, Object>)employee)
{
    Console.WriteLine(property.Key + ": " + property.Value);
}
// This code example produces the following output:
// Name: John Smith
// Age: 33

您可以尝试使用与 javascript 中的{}类似的动态对象......但是......你必须小心,例如:

public class test 
{
    public class MyValue
    {
        public string Name { get; set; }
        public string Width { get; set; }
        public string Height { get; set; }
    }

    public void testing() 
    {
        MyValue value = new MyValue();
        value.Name = "Tony";
        value.Width = "150";
        value.Height = "320";
        dynamic jsonValue = new { keyA = value };
        string height = jsonValue.keyA.Height;
    }
}

EDI:

实际上,我更仔细地阅读了您的需求,字典也可以满足您的需求:

public class test
{
    public class MyValue
    {
        public string Name { get; set; }
        public string Width { get; set; }
        public string Height { get; set; }
    }

    Dictionary<string, MyValue> dic = new Dictionary<string, MyValue>();
    public void testing()
    {
        string key = "Mykey" + NextNumber.toString();

        MyValue value = new MyValue();
        value.Name = "Tony";
        value.Width = "150";
        value.Height = "320";

        dic.Add(key, value);
    }
}

由于您要求等效于var x = {}我建议使用dynamic但我看到您想要创建一个键并将该值与该键相关联。

要将 json 字符串转换为 C# 对象,您可以使用DeserializeObject方法并传入要将此 json 转换为的 c# 对象的实例。 JsonConvert库是 Newtonsoft.Json 库的一部分。

 var converted = JsonConvert.DeserializeObject<myCSharpViewModel>(json);

您要求dynamic ExpandoObject

例子:

dynamic obj = new ExpandoObject();

obj.banana = "CIAO";
obj.bidshmqwq = 11245;
obj.BRUFCJMWH = null;

实际上,这个Type可以让你动态地声明对象的属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM