【发布时间】:2015-10-24 23:47:22
【问题描述】:
过去几个小时我一直在为此苦苦挣扎,似乎我的想法只是让它变得越来越复杂,虽然我很接近,所以我想我应该寻求帮助。
我在C#有这门课:
public class MyTestObject
{
public string name { get; set; }
public string lastname { get; set; }
public List<MyImages> {get; set; }
}
public class MyImages
{
public string imageName { get; set; }
public string imageBytes { get; set; }
}
我想在Android 中创建一个可以解析为该格式的JSONObject,但我不知道该怎么做..
这是我目前所拥有的(Android / Java):
Map<String, String> myParameters = new HashMap<>();
myParameters.put("name", "test");
myParameters.put("lastname", "test");
List<MyImage> images = getListOfImages();
if (images != null && images.size() > 0) {
Map<String, String> jsonMap = new HashMap<>();
for (MyImage image : images) {
jsonMap.put(image.getImageName(), image.getImageBytes());
}
myParameters.put("images", jsonMap);
}
JSONObject data = new JSONObject(myParameters);
callWcfService(data); // makes a POST request to the service and passes the JSON object
理论上,这个“几乎”创建了所需格式的 JSON 对象,但是我无法在 c# 中对其进行解码。
这是 WCF 服务中应该解码 JSON 字符串的代码:
var reader = new StreamReader(data);
var request = reader.ReadToEnd();
request = request.Replace("=", ":"); // i need to replace the `=` that is for some reason added in the JSON with `:`
var parser = new JavaScriptSerializer();
var myObject = parser.Deserialize<MyTestObject>(request); // it crashes here
例外是:
无法将“System.String”类型的对象转换为类型 'System.Collections.Generic.List`1[MyImages]'
从 java 代码生成的 JSON 如下所示:
{ “图像”:“{sl_big_ass_logo.png = iVBORw0KGgoAAAANSUhEUgAAAL8AAAC / CAIAAAAgiJpRAAAAAXNSR0IArs4c6QAAAARnQU1BAACx \ njwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAmCSURBVHhe7Z1PbxNHGMb5Jv0YPfQT9NaP0K9Q \ n5dw7l1aoJ9Qeqh44UlXigOBQVcoBpEhUogUERFWCgOD8cezEWZwYaJ9mhtUysde7777v7Izz / PQC \ nUGLPrplfZt5Zz9pXrv5897Mvv2WYtln7 / tcrwY8Ypnm8Pf8S0gbaQ + TQHiKH9hA5tIfIoT1EDu0h \ ncmgPkUN7iBzaQ + TQHiKH9hA5tIfIoT1EDu0hcmgPkUN7iBzaQ + TQHiInb3umZ8eL4h9BLMnGHggx \ nLga7o82X + w8fvbiz / vinJsEj8fiDo208l0qpk7Q96G90 / NZgI3CiS9Aa2iymI38M0oEU7UHXYoxp \ nPsCIszN8Mnm7749K2pOWPZhfnr9eD / o4QiAr5zUBqdhzOHkVYbCpDyokDkWt6N8edFjv3lQDhzgO \ nNaRPe2bvTtFVQeclEg5CTejNHpTGSQ05F0OBltKPPVgzB12VYCC3P12ygB7swQIn6Kdkw + Gnntj2 \ nZKQOgpWgP28yj6j25KUOgqLenzqZRzx7xsUg6Jv0Q3vqiWTP9Ow46JgsQnvqiWRPL + 8 / DA / tqSeG \ nPVmsz + eG9tRjbk + mc5YL7anH3B50QNAlGYX21GNrj93A8 + jFnZ3hk8PJKxwCmb07dUfEP9xPJm / 3 \ n8Vs8pkvJRXvqsbXHYuBBm213BkKpcTGASUFTS0N76jG0B30WdEbHbA02MKj41qVgTGq + 1ZX21GNo \ NJ + 5Sa3e06dvV4HRWNLnwjeHKP4HMw9AexWs8uuqUYHSs39PI97nqsbJHcdqKMH0sGiZ560U9Vvag \ nvAh6QhyI6Bu1BEcJymru71mKlT1ab 6cbzVmLQFXuHII63NyzFCt7tNbqnDtSxsqeQAJxfHPJczA + \ n2d4Zbjx + sf7nPzduP1gU / BaPeba9h8f7Z + ZM0vZkcbkFNlz95ffPv / 6hbdau3YJMvpU8MbEH1UPg \ ngSzp23P95r3AibZBC76tDKE9cnb2jwIVZMGU51vMDdojR8sezH2 + xdygPXJoT9L2IL7FJKE9qduT \ n8vUe2pO6PZGvNbeC9qRuD4LWfLuJQXtM7DmdFYEBXfL89bpvNzFoj4k9IDCgY9JcfNEeK3tqtlzJ \ nkmABRHus7MFoEXR / 92wNNnzraUB7rOw5nLwK + l4lGNLSKaJpj5U9usuuIInMYrTHyh6gXvpUg8Z7 \ n37JOewzt0dqcWhMs5nvcP0p7DO0xnbyqgUPjYuCPGhHaY2gPULyla2kwlx0cbce5AcNBe2ztUbwv \ np3kwY8ZZl9EeW3tAzOGnmpf2XzpBe8ztKaajoF9jxrQkoj3m9gCL686tYrS8pz0x7EEla3rtp2Fw \ nDiiJFMtq2hPDHtBL + bwoWuMQ7YlkD4hw8bB5VOYy2hPPHtB7ARQENXWXfdO0J6o9QPcLjlUCp2XF \ nEO2JbQ9IUCBEMJHRnh7sAYKPL40QDEL + / JpBe / qxB6T59QOopk9nhT / FZdCe3uwBWMancB0oCE6p \ n4VsctKdPewDK1dQWYi5NBKI9PdvjGBeDBAehpQLRniTscSR1OdGlfqcH7UnIHoCKNamJDCNizaUg \ n2pOWPQ78xafjUM1NZLQnRXsc6Ti06EIi7UnXHgccSuHS4tyLQLQndXscKD76rannXoamPXnYU4JJ \ NPK + 1 / cX1F + 3JzB7H5O1+/M32F4cf2pOlPY74ZXUw/NCejO1xNPyWP5XgQP6o59Ce7O1xxBmHUHL5\n451De1bEHgccsq6HqjtZac9K2ePAuizocsUcHG37w9CelbQHoBgyGoSqb1zQntW0x2G0gdq3TntqcW2G5gdq3TntqcW24 PUBeI9pSsvj0z7bvoy7fcac / q2wMmqnfR056SS2EPUFyC0Z6Sy2KP4kUg2lNy \ nWexBqRtIIA7tKbks9oBAAnFoTwntaR3aU0J7Wof2lNCe1invMaU9tKd1eK255LLYo7jmKu8upT2X \ nxR7FjwvyLdIeO3vGxQDVZc1N4JHRutZcvbOC9pjYU31Xcmf4pHeHFKct7i2som8Phpzgfxwylavc \ nXlDcMM99zVX07Vm0nwZzR5cPRxaDOTQ4ky7xjZ5De / TtCf67g2AYKFe8ETidFcEJdAlmYd / uObRH \ n2Z6GvRXHIZyM7r6w4LPoaI + yPa3qU8xlSz8bUIzuhIUEtwIC2tOnPS7old3RpmJJhHOwuK / 0YuFP \ NE / q3p4zTqMtohOca3YVzceABtCche6rBpIYSFX / uGJPQJioYf4BPwa9gDB5mMdhUM / EKA + 1J1J6k \ nApX9y / sU2kN7lmdRTUZ7aM + SBNd4qtAe2lOXucVyCe2hPXVZVK07aI + yPSDogHyz9NoB7dG3R2sn \ nTb9pctmJ9ujb0 + / Hcquk4RVL2qNvT + 6lT0N1AO3RtwdkOvxghdXq7TbaY2IPyE6grcFG2x20tMfK \ nHpDm90XOjWzjLO0xtAfgrzmF70eqycv9h / UXdWqgPbb2OFBHW78HLkj3vWm0J4Y9DjiUSDGEEqej \ nNw7aE8 + eEtRDRnu46uN2n0Fifx6doT092ONASQSNIlRFThqVwSaA9vRmTxWMB1j1wCStNRracVsT \ nxRVxE2hPEvZUwZjkZEJQayP1b5zht + 5h7il4brQbn2lPcvZkBO2hPXJoD + 2RQ3tojxzaQ3vkaNlz \ N4 / YDCBQtf23u + BfQGdojR8ue + Fm7duu4mPqX0QHaIydfe5C795 / 6l9GBePbMZrPTc44 + MhwOD1ri \ nn3l0NJ1O0dTZ2ZlvvQ + ytgfDj38ZHbCyB / 1aFAW6GV2 + u7v72pLBYICjjMfjk5MTKOXPwJ6s7UEO \ NX如果+ lUhRtgfSoBffvHnjO7YPcPTRaBRBo9ztwfn7VyJF0x6MNL4D0wAO + TOzIXd7sP7yr0SKpj2Y \ nPny / pcHe3p4 / Mxtoj6Y9Hz58mEwm1lVOE1AJYSB8 // 69PzMbaI + mPSVYXkEjTBwxTYIxh4eHx8fH \ n0RZitMfEngB0J2pY + PT / Uvt8FeYQFNf + MR + X7mgTLUcokOdCe2LYs6rQHtojh / bQHjm0h / bIORif \ nBP2RV7Z3hv6VSKE9nVi7divokoyCsdO / DCm0pxN37z8NuiSj + NfQAdrTlUyHn9 / ++女/ gA7Qnq6g \ N + RL + 817QN + MN + 7QFaI8Oz7b38NecxTiEk9TanEp7iBzaQ + TQHiKH9hA5tIfIoT1EDu0hcmgPkUN7 \ niBzaQ + TQHiKH9hA5tIfIoT1EDu0hcmgPkUN7iBzaQ + TQHiKH9hA5tIfIoT1EDu0hcj6xh2EEufLV \ nNz8GP2KYJvni6 + / + A1J / rql92ebRAAAAAElFTkSuQmCC \ N}”, “名称”: “测试”, “姓”: “测试”}
【问题讨论】:
-
拜托,你能发布你的Android应用程序生成的序列化JSON吗?
-
@MatiasCicero 我已经添加了生成的 JSON。我认为问题在于我输入了图像名称。
-
我认为问题在于
List<MyImage>正在使"images"包含一个数组,但它包含一个字符串。 -
@MatiasCicero 我不确定我是否理解这一点。编辑:如果您能想到一个通用示例,我可以尝试根据它更改我的 java 代码。
-
您的
"images"属性不是嵌套的 JSON 数组,它是一个包含已序列化 JSON 的字符串(但序列化不正确,因为它的嵌入字符串周围缺少引号)。