سؤال

وأنا محاولة لاستخدام LINQ إلى قائمة البيانات تشكيل في شكل معين ليتم إرجاعها كما JSON من مكالمة اياكس.

ونظرا لهذا البيانات:

var data = new List<string>();
data.Add("One");
data.Add("Two");
data.Add("Three");

وهذا الرمز: ** ما هو غير صحيح وهذا ما يحتاج الى اصلاح !! **

var shaped = data.Select(c =>
    new { c = c }
).ToList();

serializer.Serialize(shaped,sb);
string desiredResult = sb.ToString();

وأود desiredResult أن تكون:

{
    "One": "One",
    "Two": "Two",
    "Three": "Three"
}

ولكن هو حاليا:

و{ "c" : "One" },{ "c" : "Two" }، الخ.

ومشكلة واحدة هي أن على الجانب الأيسر من مهيئ الكائن أريد قيمة c، وليس c نفسها ...

هل كانت مفيدة؟

المحلول

والحل المعروضة للصحة، وليس الأداء.

        List<string> data = new List<string>()
        {
            "One",
            "Two",
            "Three"
        };

        string result =
            "{ "
            +
            string.Join(", ", data
              .Select(c => @"""" + c + @""": """ + c + @"""")
              .ToArray()
            ) + " }";

نصائح أخرى

في سلمان، و "ج" في "ج": "واحد" هو اسم الخاصية. وفي C # العالم، لا يمكنك إنشاء أسماء الملكية على الطاير (تجاهل System.ComponentModel).

والأساس، وأنا لا أعتقد أنك تستطيع أن تفعل ما تريد.

وماذا عن استخدام JSON.NET ؟

وأنا في معرض رده على هذا السؤال القديم لمجرد جميع الردود أخرى خاطئة أو ناقصة في الأساس.

وJSON هو حقا بسيطة، وذلك أساسا، للحصول على JSON تريد، تحتاج إلى فهم مجرد الفرق بين صفائف JSON:

["one", "two", "three"]

و JSON الأشياء / قواميس (كائنات والقواميس هي في الواقع نفس):

{"a": "one", "b": "two", "c": 3}

تجدر الإشارة إلى "ج" عنصر من نوع مختلف، ولكن هذه ليست مشكلة بالنسبة جافا سكريبت.

ونظرا لهذا، وتقريبا كل مسلسل I استخدام تحت الصافي (والذي هو دائما تقريبا مكتبة JSON.NET ) تحويل الأشياء .NET أو القواميس. NET إلى كائنات JSON.

وهكذا ما تحتاجه هو لتحويل قائمة إلى قاموس، ومن ثم تغذية مسلسل مع القاموس أو الكائن. سؤال آخر هو: لماذا كنت ترغب في الحصول على قاموس مع قيمة مساوية للمفتاح، ولكن سوف أقبل تلك النقطة حتى لو أنا مشكوك فيها للغاية.

مثال معين:

        List<string> source = new List<string>() { "a", "b", "c" };

        Dictionary<string, string> dict = source.ToDictionary(el => el, el => el);

        var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(dict);
        // jsonString should be "{'a':'a', 'b':'b', 'c':'c'}", with more or less whitespace depending on formatting
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top