【问题标题】:How to fix "Uncaught SyntaxError: Unexptected token L in JSON at position 1"如何修复“未捕获的语法错误:JSON 中位置 1 的意外标记 L”
【发布时间】:2019-12-04 13:26:27
【问题描述】:

我有 JavaScript 函数,其中使用了 JSON 解析器:

function myFunction(jobj) {   
  jobj = JSON.parse(jobj);
  console.log("jobj: ", jobj);
}

我有 2 个应用程序(一个 Visual Studio C# 应用程序和一个 Android Studio 应用程序)带有一个 WebView“myWebView”,我在其中调用 JavaScript 函数“myFunction”:

C# 中的代码

JObject jobj = new JObject();
jobj.Add("id", "testId");
jobj.Add("value", "1234");
String json = jobj.ToString(Newtonsoft.Json.Formatting.None, null);
String[]jsonArray = new String[] { json  };
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => await myWebView.InvokeScriptAsync("myFunction", jsonArray));

Android 中的代码:

JSONObject jsonObj = new JSONObject();
jsonObj.put("id", "testId");
jsonObj.put("value", "1234");
String json = jsonObj.toString();
String[]jsonArray = new String[] { json  };                                          
myWebView.loadUrl("javascript:myFunction('" + jsonArray + "')");

在 C# 中它工作正常。

但在 Android 中,当我进行解析时,我会收到错误消息:

未捕获的 SyntaxError:位置 1 处 JSON 中的意外标记 L

谢谢,菲尔最好的问候

【问题讨论】:

  • 显示你的json?

标签: javascript c# android json jsonparser


【解决方案1】:

在 Android 中,您使用的是 Java。在 Java 中使用连接运算符时,操作数会变成字符串。但是,您正在连接 jsonArray,它是一个数组 - 并且数组的字符串表示是神秘的。例如,new String[] { "foo", "bar" }; 字符串化为 "[Ljava.lang.String;@2a139a55"not ["foo", "bar"] 就像在大多数合理的语言中一样。您可以将jsonArray 替换为

"[" + String.join(", ", jsonArray) + "]"

【讨论】:

  • 感谢您的信息。现在我使用字符串而不是 String[] 作为函数: myWebView.loadUrl("javascript:myFunction('" + json + "')");这对我有用
猜你喜欢
  • 2019-10-06
  • 2019-11-08
  • 2019-01-03
  • 1970-01-01
  • 2020-02-27
  • 2023-01-29
  • 2018-03-29
  • 2021-08-06
  • 1970-01-01
相关资源
最近更新 更多