无法使用JSON将字符串值从c#传递到JavaScript

无法使用JSON将字符串值从c#传递到JavaScript,c#,javascript,json,cordova,C#,Javascript,Json,Cordova,我正在使用ApachCordova插件为WindowsPhone开发一个WindowsPhone应用程序。 我需要将参数从C#层传递到JavaScript层,并使用C#层中带格式字符串的PluginResult和JavaScript层(cordova.js文件)的CordovaCommandResult插件中的JSON.parse()函数来完成 但是,当尝试传递字符串值时,出现异常“语法错误:无效字符”。 如何传递字符串值,以便JSON.parse()能够成功解析它 这是我的密码: c层: 其中

我正在使用ApachCordova插件为WindowsPhone开发一个WindowsPhone应用程序。 我需要将参数从C#层传递到JavaScript层,并使用C#层中带格式字符串的PluginResult和JavaScript层(cordova.js文件)的CordovaCommandResult插件中的JSON.parse()函数来完成 但是,当尝试传递字符串值时,出现异常“语法错误:无效字符”。
如何传递字符串值,以便JSON.parse()能够成功解析它

这是我的密码:

c层:

其中unit是一个字符串变量,它会导致异常

JavaScript层:cordova.js

调用GetConfiguration函数:

getConfiguration: function (successCallback, errorCallback, args) {            
    var win = function (result) {
        successCallback(result);
    };

    var fail = errorCallback && function (code) {
        errorCallback(code);
    };

    exec(win, fail, "SensorsManager", "GetConfiguration", args);      
},
分析从c层返回的结果:


实际上,您正在创建的JSON不正确

更多要点:
1) 您发送回的响应内容类型是什么。如果您使用第三方库创建Json,然后直接从服务器以文本/Json的形式发送内容类型会更好。

当您说我的Json格式错误时,您的意思是什么?您的意思是我从GetConfiguration函数返回的字符串不正确?是的,不是您只需获取该字符串并使用jsonlint.comOk对其进行验证。我得到了它。在JSON字符串中-每个字符串值都必须用引号括起来,例如:“x”:“foo”而不是像我原来那样的“x”:foo。还可以发送JSON格式的其他值。单位,指数.ToString(“0.0”,CultureInfo.InvariantCulture),频率.ToString(“0.0,CultureInfo.InvariantCulture”)。我认为它们也不是json格式。
getConfiguration: function (successCallback, errorCallback, args) {            
    var win = function (result) {
        successCallback(result);
    };

    var fail = errorCallback && function (code) {
        errorCallback(code);
    };

    exec(win, fail, "SensorsManager", "GetConfiguration", args);      
},
  define("cordova/plugin/windows8/CordovaCommandResult", function (require,exports,
  module) {
    var cordova = require('cordova');
    var channel = require('cordova/channel');

    // singular WP callback function attached to window,
    //status is used to determine if it is a success or error
    module.exports = function (status, callbackId, args, cast) {

    if (status === "backbutton") {
        // do not detach backbutton event, as we need to be able to catch exceptions
        cordova.fireDocumentEvent("backbutton", undefined, true);
        return "true";
    }
    else if (status === "resume") {
        cordova.fireDocumentEvent('resume');
        return "true";
    }
    else if (status === "pause") {
        cordova.fireDocumentEvent('pause');
        return "true";
    }

    var parsedArgs;

    try {
        parsedArgs = JSON.parse(args);
    }
    catch (ex) {
        return;
    }

    var safeStatus = parseInt(status, 10);
        if (safeStatus === cordova.callbackStatus.NO_RESULT ||
            safeStatus === cordova.callbackStatus.OK) {
            cordova.callbackSuccess(callbackId, parsedArgs, cast);
        }
        else {
            cordova.callbackError(callbackId, parsedArgs, cast);
        }
    };
});