簡體   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