إنشاء كائن جسون تسلسل مزدوج في بقية الشركات المملوكة للدولة ج#
-
21-12-2019 - |
سؤال
لست متأكدا مما إذا كنت أقوم بتسلسل كائن جسون الخاص بي ، ولكن ينتج عن الإخراج تنسيق غير مرغوب فيه.أنا تعريض نقطة النهاية ريست عبر ملحق كائن خادم أركجيس (ريست سو).لقد نفذت مؤخرا أيضا 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"}]
}