簡體   English   中英

將json數組轉換為javaScript對象

[英]convert array of json to javaScript object

我有問題我需要使用c#從json對象數組生成js對象,即這是json:-

[
     { 
         "FieldName": "lastPrice",
         "LookupID": 1,
         "FieldAr": "اخر سعر",
         "FieldEn": "last price"
     },
     {
         "FieldName": "currentPrice",
         "LookupID": 2,
         "FieldAr": "السعر الحالي",
         "FieldEn": "current price"
     }
]

我需要的是:

 var localAr = {};
 local.lastPrice /*field name*/ = "اخر سعر"; // fieldAr
 var  localEn = {};
 local.lastPrice /*field name*/ = "last price"; //FieldEn

我不知道如何做到這一點,甚至不知道我應該搜索什么

您可以使用方括號符號來執行此操作,該方括號符號允許您將字符串用作屬性名稱

 var input = [ { "FieldName": "lastPrice", "LookupID": 1, "FieldAr": "اخر سعر", "FieldEn": "last price" }, { "FieldName": "currentPrice", "LookupID": 2, "FieldAr": "السعر الحالي", "FieldEn": "current price" } ]; var fieldAr = {}; for(var i=0;i<input.length;i++){ var item = input[i]; fieldAr[item.FieldName] = item.FieldAr; } console.log(fieldAr) 

更新的回應

好的,因此您想在C#中完成與下面發布的解決方案類似的操作。 您需要做的第一件事是將JSON反序列化為一個對象。 最簡單的方法是使用JSON.NET並將其轉換為動態對象 ,然后將其轉換為字典類型。 您將以JSON形式返回字典(使用MVC的JSON方法或使用JSON.NET轉換回來)

var json = GetJson();
dynamic fields = JArray.Parse(json);
var myObj = new Dictionary<string, object>();

foreach (var field in fields)
{
   myObj.Add((string)field["FieldName"], field["FieldAr"]);
}

Console.WriteLine(JsonConvert.SerializeObject(myObj));

原始響應如果我理解正確,則希望將JSON返回到看起來與以下格式相似的javascript對象中:

var newObj = {
   lastPrice: "اخر سعر",
   currentPrice:  "السعر الحالي"
};

如果正確的話,我將對象解析為JSON對象,然后從中創建一個新對象。 例如,

var fields= JSON.parse(data);
var myObj = {};

for(var index = 0; index < fields.length; fields++){
   myObj[fields[index].FieldName] = fields[index].FieldAr;
}

這非常簡單,只需遍歷每個條目並根據屬性名稱存儲屬性值。

 // Assume you called JSON.parse(json) to get the following parsed data... var parsedData = [{ "FieldName": "lastPrice", "LookupID": 1, "FieldAr": "اخر سعر", "FieldEn": "last price" }, { "FieldName": "currentPrice", "LookupID": 2, "FieldAr": "السعر الحالي", "FieldEn": "current price" }]; var strings = { en: {}, ar: {} }; for(var i = 0; i<parsedData.length;i++){ var data = parsedData[i]; strings.en[data.FieldName] = data.FieldEn; strings.ar[data.FieldName] = data.FieldAr; } console.log(strings); 

這樣,您就可以根據語言環境和字段名稱訪問屬性,如下所示:

console.log(strings.en.lastPrice); // "last price"
console.log(strings.ar.lastPrice); // "اخر سعر"

您可以在c#中為您的對象創建一個類,使用所需的屬性值實例化該類的2個實例,添加到列表中,然后使用Newtonsoft.Json庫對列表進行序列化。 簡單:)

public class Field{ 
    public string FieldName {get;set;}
    public int LookupID {get;set;}
    public string FieldAr {get;set;}
    public string FieldEn {get;set;}
}

var field1 = new Field(){ FieldName = "lastPrice", LookupID = 1, FieldAr = "اخر سعر", FieldEn = "last price" };
//init other field here

var fields = new List<Field>() {field1};

var fieldsString = JsonConvert.SerializeObject(fields); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM