javascript - 如何修复 "Uncaught SyntaxError: Unexptected token L in JSON at position 1"

标签 javascript c# android json jsonparser

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

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

我有 2 个应用程序(一个 Visual Studio C# 应用程序和一个 Android Studio 应用程序),其 Web View “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 中,当我进行解析时,我收到错误消息:

Uncaught SyntaxError: Unexptected token L in JSON at position 1

谢谢,最诚挚的问候菲尔

最佳答案

在 Android 中,您使用的是 Java。当您在 Java 中使用串联运算符时,操作数将转换为字符串。但是,您正在连接 jsonArray,它是一个数组,而数组的字符串表示形式是神秘的。例如,new String[] { "foo", "bar"}; 字符串化为 "[Ljava.lang.String;@2a139a55"not ["foo", "bar"] 就像在大多数明智的语言中一样。您可以将其中的 jsonArray 替换为

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

关于javascript - 如何修复 "Uncaught SyntaxError: Unexptected token L in JSON at position 1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57215996/

相关文章:

javascript - 如何使用 orderByChild equalTo 检索子节点的完整路径?

c# - 定期读取从 Http PostAsync 返回的 Task<Stream> 响应内容

java - '未能找到样式 mapViewStyle' 错误仍然存​​在

android - 在 map 框中进行离线导航

javascript - 在 javascript 中使用 ruby​​ 方法而不使用 ajax

javascript - 在 javascript 或 css 中定位前一个 div

javascript - 快速滚动时获取scrollTop

c# - 如何在 C# 中使用 sendkey 消息定位虚拟桌面?

c# - 遍历结构成员

android - tabhost 的好例子