在本文中,我们将为您详细介绍JSON和ObjectLiteralNotation有什么区别?的相关知识,并且为您解答关于json和object的区别的疑问,此外,我们还会提供一些关于@Temporal
在本文中,我们将为您详细介绍JSON 和 Object Literal Notation 有什么区别?的相关知识,并且为您解答关于json和object的区别的疑问,此外,我们还会提供一些关于@Temporal(TemporalType.DATE)和JSONObject.fromObject(jsonMap);共同存在、asp.net core 3.0 JObject The collection type ''Newtonsoft.Json.Linq.JObject'' is not supported、boto3 list_objects和list_objects_v2有什么区别?、C#中Array和object []有什么区别?的有用信息。
本文目录一览:- JSON 和 Object Literal Notation 有什么区别?(json和object的区别)
- @Temporal(TemporalType.DATE)和JSONObject.fromObject(jsonMap);共同存在
- asp.net core 3.0 JObject The collection type ''Newtonsoft.Json.Linq.JObject'' is not supported
- boto3 list_objects和list_objects_v2有什么区别?
- C#中Array和object []有什么区别?
JSON 和 Object Literal Notation 有什么区别?(json和object的区别)
有人能告诉我使用Object Literal Notation 定义的 JavaScript 对象和 JSON 对象 之间的主要区别是什么吗?
根据一本 JavaScript 书,它说这是一个使用 Object Notation 定义的对象:
var anObject = { property1 : true, showMessage : function (msg) { alert(msg) }};
在这种情况下,为什么它不是 JSON 对象?仅仅因为它不是用引号定义的吗?
答案1
小编典典让我们首先澄清一下 JSON 实际上是什么。JSON 是一种 文本
的、与语言无关的数据交换格式,很像 XML、CSV 或 YAML。
数据可以以多种方式存储,但如果它应该存储在文本文件中并可供计算机读取,则需要遵循某种结构。JSON 是定义这种结构的众多格式之一。
此类格式通常与语言无关,这意味着它们可以由 Java、Python、JavaScript、PHP 处理,应有尽有。
相反, JavaScript 是一种编程语言。当然,JavaScript 也提供了一种定义/描述数据的方法,但语法是 JavaScript 特有的。
作为一个反例,Python 有 元组 的概念,它们的语法是(x, y)
. JavaScript 没有这样的东西。
让我们看看 JSON 和 JavaScript 对象字面量之间的语法差异。
JSON 具有以下语法约束:
- 对象 键 必须是 字符串 (即用双引号括起来的字符序列
"
)。 - 这些值可以是:
- 一个字符串
- 一个号码
- 一个(JSON)对象
- 数组
true
false
null
- 重复键 (
{"foo":"bar","foo":"baz"}
) 产生未定义的、特定于实现的结果;JSON 规范没有明确定义它们的语义
在 JavaScript 中,对象字面量可以有
- 字符串文字、数字文字或标识符名称作为键(从 ES6 开始,现在也可以计算键,这引入了另一种语法)。
- 这些值可以是任何有效的 JavaScript 表达式,包括函数定义和
undefined
. - 重复的键产生定义的、指定的结果(在松散模式下,后一个定义替换前者;在严格模式下,这是一个错误)。
知道,仅通过查看 语法 ,您的示例不是 JSON,原因有两个:
- 您的键不是字符串(文字)。它们是 标识符名称 。
- 您不能将函数作为值分配给“JSON 对象”(因为 JSON 没有为函数定义任何语法)。
但最重要的是,从头开始重复我的解释:您处于 JavaScript 上下文中。您定义一个 JavaScript 对象。如果有,“JSON
对象”只能包含在字符串中:
var obj = {foo: 42}; // creates a JavaScript object (this is *not* JSON) var json = ''{"foo": 452}''; // creates a string containing JSON
也就是说,如果您正在编写 JavaScript 源代码,而不是处理 字符串 ,那么您就不是在处理 JSON。也许您以 JSON 格式接收数据(例如,通过
ajax 或从文件中读取),但是一旦您或您正在使用的库解析了它,它就不再是 JSON。
只是因为对象字面量和 JSON 看起来 相似 ,并不意味着您可以互换命名它们。另请参阅没有“JSON
对象”之类的东西。
@Temporal(TemporalType.DATE)和JSONObject.fromObject(jsonMap);共同存在
@Temporal(TemporalType.DATE)的日期类型 是 java.sql.Date,这样在执行JSONObject.fromObject(jsonMap);时会报
net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
异常详细信息最后一句可以看出是getHours()时出异常了。这是因为:@Temporal(TemporalType.DATE)输出到前台页面时输出的格式是:
2011-07-05
没有hours,所以报错,
这时可以把@Temporal(TemporalType.DATE) 改为
@Temporal(TemporalType.TIMESTAMP)
在页面端取值:2011-07-05 22:51:34:000
即可。
asp.net core 3.0 JObject The collection type ''Newtonsoft.Json.Linq.JObject'' is not supported
在asp.net core 3.0 中,如果直接在Controller
中返回 Jobject
类型,会抛出如下错误:
The collection type ''Newtonsoft.Json.Linq.JObject'' is not supported.
System.NotSupportedException: The collection type ''Newtonsoft.Json.Linq.JObject'' is not supported.
at System.Text.Json.JsonPropertyInfoNotNullable`4.GetDictionaryKeyAndValueFromGenericDictionary(WriteStackFrame& writeStackFrame, String& key, Object& value)
at System.Text.Json.JsonPropertyInfo.GetDictionaryKeyAndValue(WriteStackFrame& writeStackFrame, String& key, Object& value)
at System.Text.Json.JsonSerializer.HandleDictionary(JsonClassInfo elementClassInfo, JsonSerializerOptions options, Utf8JsonWriter writer, WriteStack& state)
at System.Text.Json.JsonSerializer.Write(Utf8JsonWriter writer, Int32 originalWriterDepth, Int32 flushThreshold, JsonSerializerOptions options, WriteStack& state)
at System.Text.Json.JsonSerializer.WriteAsyncCore(Stream utf8Json, Object value, Type inputType, JsonSerializerOptions options, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter.WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding)
at Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter.WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|29_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
该问题的出现估计与.net 3.0 新引入的System.Text.Json
类库有关.
折衷的解决办法是:
使用Content
方法将 JObject
类型的返回值转为 ContentResult
类型.
伪代码如下:
[HttpPost]
public ContentResult Method1([FromBody]Param param1)
{
JObject result=xxx;
return Content(result.ToString());
}
如果有时间,建议跟一下System.Text.Json
类库的源码来彻底解决该问题.
boto3 list_objects和list_objects_v2有什么区别?
我正在尝试使用python在Amazon s3存储桶中列出对象boto3
。
似乎boto3
有2个函数可以列出存储桶中的对象:list_objects()
和list_objects_v2()
。
两者之间有什么区别,使用一个相比另一个有什么好处?
C#中Array和object []有什么区别?
这导致了一个问题,Array和object []之间有什么区别,如果有的话?
我知道Array可以用于静态方法,而T []不能但是实例有区别吗?它们似乎具有相同的实例方法/属性.
如果没有区别,为什么Enum.GetValues()返回Array而不是object []?
解决方法
I was about to use
Enum.GetValues()
as normal,and started wondering why it returns aSystem.Array
instead ofobject[]
.
因为object []会包含所有值.我们想要的是值本身的数组,而不是它们的盒装版本.
在泛仿制药C#中一般表示一般的唯一方法是Array.请记住,该API是CLR的第一个版本,缺少泛型.
在具有泛型的世界中,存在许多更好的可能设计.
坦率地说,在没有仿制药的世界中有更好的设计.立即想到的两个是:(1)这可能是Type上的实例方法,(2)C#编译器可以在每个枚举类型上生成公共静态MyEnum [] GetValues()方法.
Is it something to do with the ComVisible attribute?
据我所知.
What is the difference between
Array
andobject[]
,if any?
我不知道如何回答“有什么不同”的问题.如果我问你“长颈鹿和哺乳动物有什么区别?”你会怎么回答呢?这是一个奇怪的问题.
数组是对象的基类[]是我能告诉你的最好的.
I kNow
Array
can be used for static methods whilstT[]
cannot but is there a difference for instances?
我也不明白这个问题.你能举一个“你可以用于静态方法”的例子吗?
也许你的意思是奇怪的是,通常你可以从派生类型访问类型的静态成员,但你不能使用数组类型?也就是说,你可以说:
class B { public static void M() {} } class D : B {} ... B.M(); D.M(); // Same thing
这有效:
Array.sort(whatever);
但这不起作用:
int[].sort(whatever);
这是C#处理成员访问操作符的一个奇怪之处,但是如果你输入int []那就没什么好处的,这很奇怪.排序()赔率非常好,你做错了.
无论哪种方式,我都不知道它与你的问题有什么关系.你能澄清一下这个问题吗?
If there is no difference,why does Enum.GetValues() return Array instead of object[]?
这个问题是不连贯的.如果你告诉我“白宫”和“宾夕法尼亚大道1600号”是同一个地址,那么我说“好吧,如果没有区别,那么为什么特朗普总统住在白宫而不是1600宾夕法尼亚大道?”你怎么回答我的疯狂问题?如果没有区别那么没有区别,那为什么重要呢?
在这种情况下,问题是基于错误的前提,因为object []和Array是不同的.但目前的问题无法回答.
我们今天的关于JSON 和 Object Literal Notation 有什么区别?和json和object的区别的分享就到这里,谢谢您的阅读,如果想了解更多关于@Temporal(TemporalType.DATE)和JSONObject.fromObject(jsonMap);共同存在、asp.net core 3.0 JObject The collection type ''Newtonsoft.Json.Linq.JObject'' is not supported、boto3 list_objects和list_objects_v2有什么区别?、C#中Array和object []有什么区别?的相关信息,可以在本站进行搜索。
本文标签: