إنشاء كائن جسون تسلسل مزدوج في بقية الشركات المملوكة للدولة ج#

StackOverflow https://stackoverflow.com//questions/20013632

سؤال

لست متأكدا مما إذا كنت أقوم بتسلسل كائن جسون الخاص بي ، ولكن ينتج عن الإخراج تنسيق غير مرغوب فيه.أنا تعريض نقطة النهاية ريست عبر ملحق كائن خادم أركجيس (ريست سو).لقد نفذت مؤخرا أيضا JSON.Net مما سمح لي بشكل أساسي بإزالة عدة أسطر من التعليمات البرمجية.

حتى هنا هو معالج ، وهو قطعة الأساسية خلق البيانات للخدمة (بالنسبة لك اللمحات غير نظم المعلومات الجغرافية).

private byte[] SearchOptionsResHandler(NameValueCollection boundVariables, string outputFormat, string requestProperties, out string responseProperties)
    {
        responseProperties = null;

        JsonObject result = new JsonObject();                                 

        // Towns
        DataTable dataTableTowns = GetDataTableTowns();
        String jsonStringTowns = JsonConvert.SerializeObject(dataTableTowns); 
        result.AddString("Towns", jsonStringTowns);

        // GL_Description
        DataTable dataTableGLDesc = GetDataTableGLDesc();
        String jsonStringGLDesc = JsonConvert.SerializeObject(dataTableGLDesc);                       
        result.AddString("GLDesc", jsonStringGLDesc);

        return Encoding.UTF8.GetBytes(result.ToJson());
    }

والنتيجة هي قبيحة جسون:

{
    "Towns": "[{\"Column1\":\"ANSONIA\"},{\"Column1\":\"BETHANY\"},{\"Column1\":\"BLOOMFIELD\"}]",
    "GLDesc": "[{\"Column1\":\"Commercial\"},{\"Column1\":\"Industrial\"},{\"Column1\":\"Public\"}]"
}

هل لأنني تسلسل مزدوج بطريقة أو بأخرى?شكرا ليبحث هذا أكثر.

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

المحلول

نعم ، أنت تسلسل مزدوج.انها هناك حق في التعليمات البرمجية الخاصة بك.

لكل من جداول البيانات الخاصة بك, dataTableTowns و dataTableGLDesc, ، أنت تتصل JsonConvert.SerializeObject() لتحويلها إلى سلاسل جسون ، والتي يمكنك بعد ذلك إضافة إلى نتيجة JsonObject.ثم تتصل ToJson() على النتيجة ، والتي يفترض تسلسل كل شيء إلى جسون مرة أخرى.

JsonObject ليست جزءا من Json.Net ، في حين JsonConvert هو ، لذلك أود أن أوصي باستخدام واحد أو آخر.عموما ، كنت ترغب فقط في تجميع كل شيء في كائن نتيجة واحدة ومن ثم تسلسل كل شيء مرة واحدة في نهاية المطاف.هنا هو كيف أود أن تفعل ذلك مع Json.Net باستخدام كائن مجهول لعقد النتيجة:

var result = new 
{ 
    Towns = GetDataTableTowns(),
    GLDesc = GetDataTableGLDesc() 
};

string json = JsonConvert.SerializeObject(result);
return Encoding.UTF8.GetBytes(json);

هنا هو الإخراج:

{
    "Towns":[{"Column1":"ANSONIA"},{"Column1":"BETHANY"},{"Column1":"BLOOMFIELD"}],
    "GLDesc":[{"Column1":"Commercial"},{"Column1":"Industrial"},{"Column1":"Public"}]
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top