将 JSON 字符串从一个应用程序传递到另一个应用程序(Windows 8.1 应用程序)C#
Pass JSON string form one app to another app (Windows 8.1 Apps) C#
我正在使用自定义协议从 windows 运行时应用程序打开另一个应用程序。我正在使用以下代码片段:
await Launcher.LaunchUriAsync(new Uri("appb://hello"));
当有纯字符串时它工作正常。但是它在传递 JSON 字符串时给出了解析错误。
Invalid URI: The hostname could not be parsed.
我正在通过以下方式创建 JSON:
JObject jObj = new JObject();
jObj.Add("Name", "abcdef");
jObj.Add("Address", "acvdfs");
string json = jObj.ToString();
它给出 JSON 为:
{ "Name": "abcdef", "Address": "acvdfs" }
您的问题是因为您要发送 整个 json
字符串以创建为 Uri。
您需要先从字符串 中获取所需的值,然后 然后 将这些值传递给您的方法。
举个例子,假设您的
JObject jObj = new JObject();
jObj.Add("Name", "abcdef");
jObj.Add("Address", "acvdfs");
string json = jObj.ToString();
代码会给你一个“{Name}/{Address}
”输出 - appb://abcdef/acvdfs
而不是直接将其解析为 string
,您需要先获取值。
否则你的
{ "Name": "abcdef", "Address": "acvdfs" }
是什么导致了
Invalid URI: The hostname could not be parsed.
错误。
您可以这样做以便从该字符串中检索值:
var values = jObj.Properties().Select(x => x.Value.ToString()).ToArray(); // Gives you an array of the values.
var path = string.Join("/", values); // Creates an "a/b" path by joining the array.
await Launcher.LaunchUriAsync(new Uri("appb://" + path)); // Give that path to create the Uri and pass to your method.
此代码假定您仅使用按键按照我的方式创建路径。它适用于任意数量的键,因为它只是将所有值与“/”连接在一起 - 例如a/b/c/d/e/f/g
等
有任何问题,尽管问:)
希望对您有所帮助!
我正在使用自定义协议从 windows 运行时应用程序打开另一个应用程序。我正在使用以下代码片段:
await Launcher.LaunchUriAsync(new Uri("appb://hello"));
当有纯字符串时它工作正常。但是它在传递 JSON 字符串时给出了解析错误。
Invalid URI: The hostname could not be parsed.
我正在通过以下方式创建 JSON:
JObject jObj = new JObject();
jObj.Add("Name", "abcdef");
jObj.Add("Address", "acvdfs");
string json = jObj.ToString();
它给出 JSON 为:
{ "Name": "abcdef", "Address": "acvdfs" }
您的问题是因为您要发送 整个 json
字符串以创建为 Uri。
您需要先从字符串 中获取所需的值,然后 然后 将这些值传递给您的方法。
举个例子,假设您的
JObject jObj = new JObject();
jObj.Add("Name", "abcdef");
jObj.Add("Address", "acvdfs");
string json = jObj.ToString();
代码会给你一个“{Name}/{Address}
”输出 - appb://abcdef/acvdfs
而不是直接将其解析为 string
,您需要先获取值。
否则你的
{ "Name": "abcdef", "Address": "acvdfs" }
是什么导致了
Invalid URI: The hostname could not be parsed.
错误。
您可以这样做以便从该字符串中检索值:
var values = jObj.Properties().Select(x => x.Value.ToString()).ToArray(); // Gives you an array of the values.
var path = string.Join("/", values); // Creates an "a/b" path by joining the array.
await Launcher.LaunchUriAsync(new Uri("appb://" + path)); // Give that path to create the Uri and pass to your method.
此代码假定您仅使用按键按照我的方式创建路径。它适用于任意数量的键,因为它只是将所有值与“/”连接在一起 - 例如a/b/c/d/e/f/g
等
有任何问题,尽管问:)
希望对您有所帮助!